2010年12月6日月曜日

日時選択コントロール

日付選択に TDateEdit を使用していたのだけど、
カレンダー表示した際の選択は、ダブルクリックにより操作になってしまうみたい、、、
これは、ちょっと嫌だな~シングルクリックがいいな~
と、TRxDateEdit の使用も考えたのだけど、こちらはカレンダーの表示が
いまいち好みではないのです。。。

そこで、ZVDateTimeControls というのを Google さんで見つけた。
http://wiki.lazarus.freepascal.org/ZVDateTimeControls_Package

ちょっと、こっちに置き換えてみます。

2010年10月25日月曜日

日本語入力IMEの修正ファイルを更新

日本語入力IMEの修正ファイルを更新しました~

SVN更新(27836) にあたり、synedit.pp のマージ修正。
https://sites.google.com/site/lazarue777/home/insutoru/nihongo-nyuuryoku-imeno-shuusei-fairu

2010年10月24日日曜日

ファイル名(パス名)関連の Tips を追加

ファイル名(パス名)関連の Tips を追加。

https://sites.google.com/site/lazarue777/home/tips/fairu-mei--pasu-mei

一日、1Tips を記載すれば、年間で365Tipsになるかな~
と、思ってもなかなか進まない。。。(笑)

2010年10月23日土曜日

日本語で Lazarus に関しての話題を扱いたいです

日本語で Lazarus に関しての話題を扱いたいので、
twitter のハッシュタグ #lazarusjp で情報交換しませんか?

IME入力関連のソースにマージ更新

SVN更新にあたり、IME入力関連のソースにマージ更新があったので、
修正パッチを作成。

https://sites.google.com/site/lazarue777/home/insutoru/nihongo-nyuuryoku-imeno-shuusei-fairu

2010年10月16日土曜日

コマンド引数や Windows のエクスプローラーからのドラッグ&ドロップ

EggPad にて、コマンド引数や Windows のエクスプローラーからのドラッグ&ドロップを
実装してみたので、まとめサイトに Tips を追記しました。

https://sites.google.com/site/lazarue777/home/tips/kankyou-kanren

2010年10月1日金曜日

モデル定義を簡単に記載できるようにしたいんだから、、、

たぶん僕は面倒くさがりです。

画面でデータを扱う際には、TDataSet をベースとした何らかのデータセットコンポーネントを
使用することが多いのですが、、、
最近では、TMemDataset がお気に入りになっています。
でも、フィールド定義がプロパティエディタのコレクション編集なのが、すっごく億劫になって来ました。
そこで、フィールド定義をもっと容易にできないか?と、、、ツールを作り始めています。

プロパティエディタでのコレクション編集は面倒なのに、
ツールを作ることにしたのは、自分でも矛盾を感じますが、、、(笑)
このツールを作ってしまえば、コレクション編集から解放されるっ!!と
自分に言い聞かせながら作っております。

2010年9月15日水曜日

Lazarus まとめサイトにて、PowerPdf の修正版を公開

Lazarus まとめサイトをボチボチ作ろうと思い
以下のサイトを公開してみました~

https://sites.google.com/site/lazarue777/

PowerPdf にて、試しに日本語フォントの有効と文字化けの対処をしてみた
修正版をアップしてみました。
以下のページからソースをダウンロードできます。
https://sites.google.com/site/lazarue777/home/konponento-raiburari/powerpdf

まだ、PowerPdf を調査中。。。

PowerPdf の同じようなところでハマっている人がいました~

http://tomomori.cocolog-nifty.com/blog/2009/12/powerpdfbytetyp.html

Lazarus から PowerPdf を使ってみる

Lazarus から PowerPdf を使ってみることにしました。
とりあえず、以下の順でコントロールを配置してみました。
1) TPReport
2) TPRPage
3) TPRLayoutPanel
4) TPREllipse

印刷ボタンを作成し、クリックイベントでPDF出力処理を記載。
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    with PReport1 do
    begin
      FileName := SaveDialog1.FileName;
      BeginDoc;
      Print(PRPage1);
      EndDoc;
    end;
end;

円をPDFに出力することができました。

5) TPRLabel を配置し、Caption に「アメリカ」と入力。

PDFを出力すると見事に文字化けしました~(笑)

2010年9月14日火曜日

Lazarus のまとめサイト

Lazarus を使用していて、わかったことや、覚えたことを
どこかにまとめようかな~と思っています。
新規サイトを作ろうかな?

2010年9月12日日曜日

PowerPDF の Lazarus 移植版をパッケージインストールしてみる♪

PowerPDF を SVN からエクスポートし、
http://wiki.lazarus.freepascal.org/PowerPDF
インストールしてみることにしました~

とりあえず、コンパイルとインストールはできたみたい♪

TExtendedNotebook の子コントロールが変更されたのかな?

TExtendedNotebook を使用していて、SVN 更新したら、
子コントロールの TPage 読み込みでエラーになってしまった。。。
試しに TExtendedNotebook 上でページの追加の操作をしてみたら
TTabSheet で子コントロールが作成されている~

あれれ??仕様が変わった??

2010年8月19日木曜日

interface(インターフェース)を持っている(実装されている)か?の判定

親クラスを持っているか?を判定するには、is を使用するればいいけど、
interface(インターフェース)を自分で作成して、
クラスに持っているかを判定したい場合、GetInterfaceEntry を
使用します。
as を使用したい場合には、interface に GUID を埋め込んで置く必要があります。
IDEのソース上で GUID を埋め込みするには、[Ctrlキー] + [Shiftキー] + [Gキー] を
キー入力します。

type
  IDWSShapeContainer = interface
   ['{8D26C9EF-AD7A-4A6F-B145-BBEBC2D85240}']
   function IsShapeFocused():Boolean;
  end;

  TDWSBoxFlowDiagram = class(TPanel, IDWSShapeContainer)
     :
  end;

procedure TDWSShape.PaintSelectFocus(ACanvas: TCanvas);
var
  container: IDWSShapeContainer;
begin
  // nil 以外なら持っている。nil なら持っていない
  if Self.Parent.GetInterfaceEntry(IDWSShapeContainer) <> nil then
  begin
    container := Self.Parent as IDWSShapeContainer;
    if not container.IsShapeFocused() then
    begin
      exit;
    end;
  end;
     :
end;

2010年8月18日水曜日

Lazarus を SVN 更新したのだけど、、、

Lazarus を SVN 更新して再構築を行うと、
起動時に Failed to create handles. でエラーになってしまい起動できなくなってしまいました~

仕方ないので、
Daily Snapshots から再インストールしてみたのだけど、
結果、、同じエラーで起動ができない(悲)

普段使いの Lazarus と、SVN 更新用の Lazarus は、環境を分けているので
とりあえず、問題はないのですが、、、、気になってしまう。
問題解決されるといいな~

2010年8月16日月曜日

Font プロパティで日本語を設定したい場合

Font プロパティで日本語を設定したい場合、
CharSet を設定しますが、

FEdit1.Font.CharSet := SHIFTJIS_CHARSET;

SHIFTJIS_CHARSET の定義は、LCLType にあります。

uses LCLType;

2010年6月14日月曜日

Zeos コンポーネントでMSSQLにつないだら、UNIQUEIDENTIFIER 型が ftBlob に。。

ハマったので、備忘録。
GUIDを文字列で処理したかったのです。。。

{ TBlobField からGUIDを文字列で取得します
  @param field TBlobFieldを渡します
  @return GUIDを文字列にして返します
}
function DWSBlobFieldToGuidString(field: TField): String;
var
  bf:TBlobField;
  guid:TGUID;
  ms:TMemoryStream;
  sz: Integer;
begin
  Result := '';
  if not (field is TBlobField) then exit;

  bf := field as TBlobField;
  sz := SizeOf(guid);
  if bf.BlobSize <> sz then exit;
  ms := nil;
  try
    ms := TMemoryStream.Create;
    bf.SaveToStream(ms);
    ms.Position := 0;
    ms.Read(guid, sz);
  finally
    FreeAndNil(ms);
  end;
  Result := GUIDToString(guid);
end;