2010年9月15日水曜日

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;