Delphi相談室その5

このエントリーをはてなブックマークに追加
Del6のTStringsはDel3のTStringsより明らかに重い。
953デフォルトの名無しさん:02/08/03 18:01
>>952
抽象クラスの実行速度なんぞ良くはかれたな。感動。
ソースが思いんだよ!タコ
956デフォルトの名無しさん:02/08/03 18:15
抽象クラスにはソースファイル無いの?
>>956
な〜に言ってんだか♪
褒められた!
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=cache:http%3A%2F%2Ffukunm12%2Enucl%2Ekyushu%2Du%2Eac%2Ejp%2F%7Eakasaka%2Fmemo%2Fdelphi%2Frightbutton%2Ehtml
で、NewProcをFormのメンバーに置くと、
「変数が必要です」
と言われてコンパイルできません。どうすればイイでしょうか?
>>959 こんなふうにして下さい
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  procedure FormCreate(Sender: TObject);
 private
  procedure NewButtonProc(var Msg: TMessage);
 public
  OldButtonProc:TWndMethod;
 end;

var Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.NewButtonProc( var Msg: TMessage);
begin
 with Msg do
  case Msg of
  WM_RBUTTONDOWN: Msg := WM_LBUTTONDOWN;
  WM_RBUTTONUP:  Msg := WM_LBUTTONUP;
  end;
  OldButtonProc(Msg);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin   ShowMessage( 'こんにちは' );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 OldButtonProc:= Button1.WindowProc;
  Button1.WindowProc:= NewButtonProc;
end;

end.
>>960
 なるほど。
しかし、FormのメンバーにNewProcを置くと、SetWindowLongは使えないと言う事ですか・・・。
これは何故ですか?
>>961

なんのこと?
>>961 SetWindowLongはメソッドではなく手続きしか登録出来ないからです
 ポインタが1つしか渡せないから、メソッドポインタを渡しても
 どのオブジェクトかを識別出来ません。

 MakeObjectInstance を使うとメソッドを手続きに仲介するコードを作らせる事が出来ますが・・・

詳しい仕掛けはここ参考にするといいでしょう
ttp://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-1.htm


が、VCLを使うなら WindowProcプロパティを操作する方が簡単ですからそうした方がいいです
964デフォルトの名無しさん:02/08/04 01:08
>>963
 オブジェクトが別の場合は別のアドレス空間になるのですか?
てっきり一つのプロセス内なら、アドレスは全て一つで表せるのかと・・・。
 うーん言いたい事がうまく伝わって無いかもしれない罠。
>オブジェクトが別の場合は別のアドレス空間になるのですか?
とりあえずこの文章はおかしい
>>964
メソッドポインタは普通のポインタと違うんだよ。
>>966
指してるものは違えどポインタはポインタだろう。
969デフォルトの名無しさん:02/08/04 08:54
どなたか、ModelMaker という UML を使われている方、いらっしゃいますか?
感触を知りたいのですが。
>>964
 オブジェクトは同じアドレス空間にあります。
 しかし、メソッドポインタは、命令コードと データ領域の2つを示さなければいけません。

FormのメンバーにNewProcをおくと、NewProgは手続きではなくメソッドになります。
メソッドには隠れた引数があり、それはどのオブジェクトインスタンスであるかを示すものです
具体的にForm1である事を教える必要があります。

それから >>959の例だと、 実際に buttonをホントのサブクラス=継承して動作を書き換える方が
簡単だと思います。
>>970
へぇ、C++みたいに隠されたthisポインタみたいなのがあるんだ。
972デフォルトの名無しさん:02/08/04 12:03
Quick Report
973デフォルトの名無しさん:02/08/04 12:05
Quick Reportのソースでは、パラメータクエリは使えないんですか?
直接SQLで記述するとうまくプレビュできるのですが、パラメータクエリにすると、真っ黒(っていうか灰色)のままなんですけど。
>>973
パラメータ値をセットしてないから。
975デフォルトの名無しさん:02/08/04 12:59
>974

どもです。

いえいえ、セットしてます。構文も間違っていません。(他のクエリでも使っているがそちらは正常。)
976へい:02/08/04 13:05
みつけた!
http://ja2kai.hoops.livedoor.com
にあった。
>>976
うさんくさすぎ。練習し直し。
978へい:02/08/04 13:17
うんこくさいって。。。
979Delphi1から使ってます:02/08/04 13:54
記念パピコ(^〜^)
981デフォルトの名無しさん:02/08/04 17:28
       v
      (゚ω゚) <正直言って、出てくるとおもってないか?
     /(  )\
      /'\
982涙でディスプレイが見えない…:02/08/05 00:11
981の放置っぷりが見事で…見事で…。
ああ、待っているよ!>>981
ひょっとして、出てくるタイミングを失った?

さあ、どう出る!>>981
あれ?
出てきたのは別のスレ?
逆放置プレーされていると思われる・・・
そろそろ埋める?
その5よりその6の方が先に埋まったら、
それはそれでいいけどな(w
>>985
そういう見方もアリですな!w
>>986
もう少し見守ってみたい気もするが・・・
>>981の動向も気になるし(w
邪魔だからそろそろ埋めてください。

新スレはココ
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
992デフォルトの名無しさん:02/08/08 00:44
996
ふーつかれた
あとすこし
999
きたー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。