日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年12月
2 3 4 5 6 7 1
9 10 11 12 13 14 8
16 17 18 19 20 21 15
23 24 25 26 27 28 22
30 31 29

アーカイブ

2005年06月 のアーカイブ

Delphi/ヘルプ


古いソフトを MOから発掘して修正。
8年ぶりに、ヘルプを修正しようと編集したら、コンパイルするとエラー。
いったい、なにが。。。。  

ということで、
HCRTF.EXEが4.01 しらべると 4.03が新しい物らしい

ということで 忘れないようにメモ


ヘルプコンパイラ HCRTF.EXE
Hotspot Editor も同梱されているみたい。

でさっそくまた コンパイル
今度はうまくいきました。
うーん。。。 編集したWordのバージョンのせいかな?


ヘルプ作りにくいしなぁ
 コンパイル面倒だし・・・
  単なるHTMLでいいかもぉ ・・・
   って近頃はそうしている・・・


Microsoft HTML Help 1.4 SDK
HTML Help Downloads

Microsoft.NETSDKv1.1\Samples\Tutorials\deployment\1_helloworld
を試してみる
このサイト半角の¥がきえるのでてきとーによんでください

まず、環境変数PATHに
    C:¥WINDOWS¥Microsoft.NET¥Framework¥v1.1.4322
をいれてあるか確認。
build.batを実行
Hello.exe ができた。 サイズ 3.00 KB (3,072 バイト)
早速実行。
Hello World using C#!

んで じゃぁ 、Delphiいってみよう
Hello.dpr を開く。 もちろん .netね。
オプションでデバッグ関係オフ。
さっそく コンパイルいってみよう
18.5 KB (18,944 バイト)
ぎゃあ でかくなった

くそ、 これでどうだぁ
dccil Hello.dpr
dccil -CC -$D- -$C- -$I- -$Y-  Hello.dpr
やっぱだめ。 大きい
コマンドラインから生成なんて、turboPascalと QuickC以来12年ぶりだ・・・・・


Hello.dpr の内容
program Hello;

{$APPTYPE CONSOLE}
begin
  Console.WriteLine('Hello World using Delphi for .Net!');
end.

Rave レポートを ゼロからはじめてみよう[4]


もしかして 文字化けしないかもと 淡い期待を寄せて
公式サイト公言 RTF対応というサンプルを試してみた

procedure TForm1.RvSystem1Print(Sender: TObject);
var  MemoBuf: TMemoBufEx;
begin
  With Sender as TBaseReport do begin
    MemoBuf := TMemoBufEx.Create;
    MemoBuf.BaseReport := Sender as TBaseReport;
    try
      MemoBuf.RichEdit := RichEdit1;
      MemoBuf.PrintStart := 1.0;
      MemoBuf.PrintEnd := 7.0;
      While not MemoBuf.Empty do begin
        MemoBuf.PrintHeight(SectionBottom - LineTop,false);
        If not MemoBuf.Empty then begin
          NewPage;
        end; { if }
      end; { while }
    finally
      MemoBuf.Free;
    end; { tryf }
  end; { with }
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RvSystem1.Execute
end;

実行画像サンプル



結論
 文字化け万歳
 重なり 万歳
 フォント不適応万歳

ふふふ 文字の重なりならともかく、フォントくらい再現してほしいものだ 

ふふふ このレベルでは PDF対応なんて 夢だな・・・

RTF出力がいるときは、使えないな・・・・




後日解読用 リンク
C# .NET を使用して RichTextBox の内容を印刷する方法
RichEditを印刷プレビュー1
RichEditを印刷プレビュー2


どうやって、RaveにTRichEditの親を持たせるかが問題だな・・・
うーん。。。いい案がないので隠しフォーム作ってその上にRichEdit載せるかな・・・
表示させるのには、成功したけど
Expandとtruncateにも対応させるしかないなぁ・・・

ダミーつくってみよう♪

Delphi/マウスを移動しよう

mouse_evenで マウスを 移動したり、クリックしたりできる。
マウスが移動するので、どうしても言うこと聞かないソフトを
自動でクリックさせるのに便利。
応用すると、マウス移動→クリック→入力などを ユーザーが操作したように
再現させることができる。

function Mouse_PositionTomouse_event_Point(APoint : TPoint) : TPoint;
  var
    R :TRect;
begin
  if Not Windows.GetWindowRect(GetDesktopWindow,R) then
   Result := Point(0,0)
   else
  begin
    Result.X := Trunc(($FFFF)*(APoint.X/(R.Right-R.Left)));
    Result.Y := Trunc(($FFFF)*(APoint.Y/(R.Bottom-R.Top)));
  end;
end;

これは、独自関数。MOUSEEVENTF_ABSOLUTEのとき座標系が違うので変換。 
迷惑な仕様だ・・・・
名前が長すぎるのでシンプルにしたいところ・・・・
       ClickPt := Mouse_PositionTomouse_event_Point(Point(
         100    , 200     ));
 
操作例
    mouse_event(MOUSEEVENTF_MOVE+MOUSEEVENTF_ABSOLUTE
          ,ClickPt.X,ClickPt.Y,0,0);

     mouse_event(MOUSEEVENTF_LEFTDOWN,ClickPt.X,ClickPt.Y,0,0);
     mouse_event(MOUSEEVENTF_LEFTUP  ,ClickPt.X,ClickPt.Y,0,0);

 

ついでに文字出力
  procedure SendString(Text : String);
    var
      A_WMChar : TWMChar;
      i : integer;
  begin
    for i := 1 to Length(Text) do
    begin
      Application.ProcessMessages;
      A_WMChar.CharCode := Ord(Text[i]);
      A_WMChar.KeyData := 1;
      SendMessage(AHandle,WM_CHAR,A_WMChar.CharCode,A_WMChar.KeyData) ;
    end;
  end;


この方法は、ユーザーの操作で影響を受けるので
普通に、アプリにイベントを送りには、別のやり方が有効。

Rave レポートを ゼロからはじめてみよう[3]



すっかり、RaveReportのこと忘れていました(^_^;)
ということで 前回の続き


(設計時の画面:Paint処理に対応したので画像追加)
(描画処理は、Paint、Print同じ関数で処理しているので見た目はほとんど同じになります)
文字揃えも機能するようにしました。
Tabも文字の長さとして数えているので付け方によっては真ん中にはならないけど
最初と最後のTab切り捨てて、真ん中、右寄せ、みたいな感じにしてもいいけど面倒だからしない。
デザイナからのプレビュー表示画面はこんな感じ。
右がオリジナルのRaveMemo


変則的なタブには対応していないけど まぁいいか。メモコンポだし。
タブ幅は同間隔で、mmで指定できます。
基本は左寄せ


メモ
 Raveは、Delphiが動いていないと設計させてくれない。
 Delphi2005でなくても、旧バージョンをなにか立ちあげていればいいみたいなので
2秒で立ち上がるバージョンのDelphiを起動すれば確認は簡単。


普通に機能するレベルの完成
DataMemoに対応するかは未定。
イベントで書けばDataMemoはいらない
 function DataBand1_OnBeforePrint(Self: TRaveDataBand);
 に
.Text := '体長 '+DriverDataView2Length_cm.AsString + ' cm';
日本語化けも一件落着したことだし
開発一時終了


標準のバグ
・標準コンポを特定条件に配置すると無限ループ印刷バグを発見した。(仕様?)
 (DataBand1の縦サイズがRegion1を越えて配置すると無限ループ)
・HTML出力
  画像は絶対リンクされているのでIEでないとみれません。
   (場所を変えると見えません最悪)
  Textで書いている文字も時々重なります。
・PDFには全く対応できていない。(機能しない物を付けないでほしい)
・英文しか資料がない。
 海外にも個人的な解説サイトがない。

結論
 他のレポートツールで簡単にできることをここまでして苦労する意味はないです。
オープンソースのレポートツールに日本語パッチを当てた方が楽だし、
今回で使うのは辞めます。
作ったソースは、CD_Rにでも移してHDDから抹消してきれいさっぱり記憶から消します。
利用することはないので
アンインストーラーを起動・・・


これでDelphi2005の起動が少し速くなります♪

Delphi/Rave Report/はじめてみよう
「0」 「1」 「2」 「3」
アップするのを忘れていたのを発見したので
番外編:「4」
Delphiに使えるドキュメント生成ツール


PasDoc SJIS対応版PasDoc GUI
出力:[ HTML, HtmlHelp, LaTeX , latex2rtf ]
説明書SupportedTagsWritingDocumentation
構文
なにもしなくても勝手にひろってくれるみたい
コメント内に
修正:R1 (0.8.8j)の場合
@タグ (内容)
といった形で動作を指定できるみたいです。
:R2 (0.8.8.3j) 2005-06-14の場合
@タグ  内容
()をつけりるとエラーおこすみたい
といった形で動作を指定できるみたいです。

コメントマーカーというのを決めると、コメント処理の動作を決めれるみたい
デフォルトではついていないので(Javadocスタイル?)、公式サイトでは、:がついていたりする。
今回は 普通のコメントと区別するために ! を使おうと思います
{! }みたいな感じです
()をいれていなかったので、warningがでて1時間苦戦しました。
{! @abstract (
このユニットは・・・
)
  @created (2005-05-02)
 }
unit taRvJpMemo;
いれたい変数や関数の直前に{! 説明}を書きます。
操作は簡単。 出力高速。  
出力結果は、きれいだけど
・・・・・ 図がグラフになっていない

Doxygen + Pas2Dox
出力:[ RTF(MS-Word), PDF, compressed HTML, PostScript, Unix man ]
対応言語
Delphi, C++, C, Java, Objective-C , PHP
, C#,  D , IDL (Corba and Microsoft flavors)
ダウンロードは、Setupを選ぶ。
フォルダ:日本語フォルダ不可・・・
使い方
http://www.hexe19.net/doxygen/quickstart-delphi.html
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
http://members.at.infoseek.co.jp/sakura_editor/comment-rule.html

サンプルを見る限りきれい。みやすい。
が・・・・操作が面倒
っていうか 日本語フォルダをつかえないので選択肢から除外。
・DelphiCodeToDoc
 http://dephicodetodoc.sourceforge.net/

考察
1)どちらにするか・・・・かなり悩む・・・

  1. C#で書き出すことを考えると・・・doxygenにしたほうがいいけど
    C#のユニット作ってないのでまぁいいとしよう。CなんかMOに眠ったままだし。
  2. と思っていたけど
  3. doxygenを試すと日本語フォルダを認識しないので使えない。 ソースを英語フォルダにコピーして実行してみたが、 上のサイトのような物は表示されなかった。 ファイル名がでる程度・・・・
    設定ファイルを見る限り
    TStringListのValueを使えば簡単に変更できるので設定ツールを作る手もあるがばかばかしくて作る気はおきない。 どこか探せばおちているだろうし
2)ということで
PasDoc にしたんだけど、 Type a= (v);
のときに @valueをしてみたが出力できない
vの前にコメントを貼ればできるが。。。
後方にコメントして、説明にできるタグはないのかな・・・・と思う

こちらはこちらで 不具合が。。。
でも、 お手軽
編集: R2 (0.8.8.3j) 2005-06-14をいれるとできました。
  でも、今度はクラス階層が変。継承しているのに同じ段になった・・・)

どちらにしても
自分用の作って
テンプレートをCTRL+J に登録して使うといい

() 構文がきかなくなったのが困りものだが・・・

テンプレート集
?

?

?

おもいのでいらないときは起動しない。

・常駐解除
コントロールパネル>管理ツール>サービス
MySQLを 手動 にかえる


MySQL起動.bat
net start MySQL

MySQL停止.bat
net stop MySQL
タイトル

執筆:2005.06.13
編集:2023.08.30


内容


廃棄予定の記事 (延長中)

【覚え書き】
Delphi/Light Report2/覚え書き「01」

Delphi/Rave Report/ はじめてみよう

【覚え書き】
  1. Rave Report/覚え書き「01」




PR

[PR]