STRINGGRIDの文字配置について

解決


黒猫  2008-04-14 06:41:10  No: 30495

お世話になります。
D2007StringGridの各セルの文字の配置を中央配置にしたいのですが、方法がわかりません。過去ログやD2007のヘルプをかなり探したのですが、わかりません。(D2007のヘルプファイルのわかり難いと。)
どなたかよろしくお願いいたします。

ところで、前回投稿の際、初めての投稿で、間違ってFusaさんのログに書き込んでしまいました。Fusaさんお許しください。


Ru  2008-04-14 18:16:07  No: 30496

以下の例ではDelphi2007では動きません??
https://www.petitmonte.com/bbs/answers?question_id=1066


黒猫  2008-04-15 03:15:55  No: 30497

Ruさんありがとうございます。
早速試してみたのですが、反応しません。戻り値をみてみると「0」で実行を失敗しているようです。MSDNやHELPをみながら試してみたのですが、上手くいきません。記述は以下のとおりです。
begin
   S:= StringGrid1.Cells[ACol,ARow];

   DrawText(Handle,Pchar(S),Length(S),Rect, DT_SingleLine or                     DT_VCenter or  DT_Center ); 

end;

ほかにSTRINGGRIDの設定が必要なのでしょうか?


Ru  2008-04-15 04:04:24  No: 30498

リンク先のソースは一部抜粋だったのかな?(HandleはStringGridのHandle指定する必要あり)
Handle を TStringGrid(Sender).Canvas.Handle 
に変えてみてもダメですかね?


黒猫  2008-04-15 05:36:54  No: 30499

Ruさん。何度も早速のレス有難うございます。
HandleにCanvasを指定してもだめでした。中央に位置しないし、セル内のテキストが2重になってしまいます。
何か良い知恵がございましたらよろしくお願いいたします。
手元にあるD6の参考書では、ご指摘のとおりの記述でいいように書いてあるのですが。MSDNでも、特に変更はないようにみえるのですが?


そうなん?  2008-04-15 06:04:16  No: 30500

文字が二重?ほなら、文字描画出来とるちゅうことやんか。

  with StringGrid1 do begin
   Canvas.FillRect(Rect);
   S := Cells[ACol,ARow];
   DrawText(Canvas.Handle, Pchar(S), Length(S), Rect, DT_SingleLine or DT_VCenter or DT_Center);
  end;


黒猫  2008-04-15 06:18:33  No: 30501

そうなん?さん。Ruさん。有難うございます。
解決しました。1日このことにかかっていました。
Canvas.FillRect(Rect);この1行!実はこの意味がまだよくわかっていないのですが、HELPで調べてみます。
どうしても分からないい場合、また質問させていただきます。
ほんとにありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加