ベストアンサー delphi stringgrid 2006/03/14 01:38 Delphi StringGrid で 各セルごとにフォントの色や大きさを変えたりできますか? みんなの回答 (6) 専門家の回答 質問者が選んだベストアンサー ベストアンサー miyazi-G4 ベストアンサー率55% (5/9) 2006/03/14 09:25 回答No.1 標準のTstringGridのままでは出来ませんので、コレを使うと楽です。 http://www.delphianworld.com/ TStrColGrid 文字位置:文字色:セル色:セル幅 等欲しいと思われる基本機能が実装されています。 他にもいくつかグリッドがあるので、自分の用途に合うものを探してみてはいかがでしょうか。 質問者 補足 2006/03/14 22:21 ありがとうございます。 とても良いコンポーネントと思います。 でも、 悲しいです。 インストールの方法がわかりません。 DLファイルのドキュメントを読んでも理解できません。 >通常のコンポーネントインストール手順 ってどうするんでしょう? よろしければ、参考サイトでも紹介頂ければ幸です。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (5) miyazi-G4 ベストアンサー率55% (5/9) 2006/03/15 10:23 回答No.6 Delphi2005以降?コンポーネント追加方法が変わりました。 お使いのDelphiが2005以降ならヘルプで「パッケージ, ユニット」を参照してください。 多少の読みかえは必要です。 //-- ダウンロードしたコンポーネントを自分の管理できる場所に移動しておきます。 ファイル→新規作成→パッケージ プロジェクトマネージャに Package1.bpl と言うツリーができます。 Package1.bplで右クリックすると、追加というメニュがありますので追加から、コンポーネントの.pas を追加します。 Package1.bplで右クリックすると、インストールと言うメニューもあります。 インストールすると、コンポーネントが追加されるはずです。 質問者 お礼 2006/03/15 17:27 delphi6 でしたが うまく追加できました。 ありがとうございます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 techa ベストアンサー率60% (41/68) 2006/03/15 09:37 回答No.5 わたしはCBなのでDelphiではないのですが、おそらく大差ないはずです。 メニューの コンポーネント - コンポーネントのインストール をえらび、 ユニットファイル名のところに所定のコンポーネントを 指定します。 あとはコンパイルして導入、保存すれば、どこかのタブに アイコンがついかされているとおもいます。 質問者 お礼 2006/03/15 17:30 #4のサンプルを再検討したら、なにも複雑ではないですね。 とても参考になってます。 ありがとうございます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 techa ベストアンサー率60% (41/68) 2006/03/14 10:44 回答No.4 #3です。 なんとなく近いサンプルが以下のページにあります。 参照されるのもよいのではないかと思います。 参考URL: http://forum.nifty.com/fdelphi/faq/00105.htm 質問者 お礼 2006/03/14 22:33 ありがとうございます。 結構コードが複雑になりそうですね。 参考にさせて頂きました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 techa ベストアンサー率60% (41/68) 2006/03/14 10:30 回答No.3 できますよ。私はCB6でいつもやっているので、出るφにはうまく書き換えてくださいね。 StringGridのDefaultDrawingプロパティをfalseにすると標準のフォント設定やらなにやらが全てOffの状態になるので、OnDrawCellイベントを実装します。 if(State.Contains(gdFixed)) { //固定セルだったら... sgrid->Canvas->Brush->Color= sg->FixedColor; else if(State.Contains(gdFocused)){ //フォーカスのあるセルだったら... } のようにそれぞれ記述して RECT r=RECT(Rect); sgrid->FillRect(Rect); //背景色で消去 で背景色が決められます。 同様に sgrid->Canvas->Font->Color= sgrid->Font->Color; のなどをセットしておいて InflateRect(&r,-2,-2); //テキスト表示領域の設定 とすれば、フォントカラーがきめられます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 みい ちび(@MICHIBI) ベストアンサー率26% (15/56) 2006/03/14 10:18 回答No.2 TStringGrid の OnDrawCell イベントで描画処理をすることで、実現できます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連するQ&A delphi6 StringGrid セルの位取り delphi6 StringGrid セルの位取り セルの値(数字)を右寄せ、位取りさせて表示させたいのですが、きれいに並びません。 A:='00,123,456,789' B:='00,000,123,456' にすると、きれいに並びますが、 A:='___123,456,789' B:='_________123,456' と、0を空白にすると並びがずれます。 右寄せにするプロパティはないでしょうか? QNo.258234に似た質問がありましたが、もっと簡単にできないでしょうか? DelphiのStringGridについて StringGridにFixedColsやFixedRowsというのがありますが、これを1以上に設定して、この固定された行を選択した時にイベントが起こるようにしたいのですが、OnClickイベントだと選択できる(Fixでない)行を選択しないと発生しないようです。 これに対応するイベントはありますか? あるいは他に対処法はあるでしょうか? delphiのStringGridで特定のcellの色を変える delphiのStringGridで、指定したcellの色を変えることは出来るでしょうか? cells[5,5]だけ色が付いてる、みたいなイメージです。 初心者のためサンプルコードをご教示いただけると大変ありがたいです。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム Delphiでコンポーネントをfunctionから参照するには Delphiで例えば、StringGridのCellsプロパティをeventで呼ばれる procedureではなく自分で作ったfunctionで参照したり,更新したりできる 簡単な方法がありますか? Delphi6 ループ中にキー入力 Delphi 6 です。 for next などのループの中で、stringgridのセルをEnterキーで選択させたい時、選択されるまで(キーが押されるまで)処理を進めたくない方法は、どうするんでしょうか? flg:=false; for i:=1 to 100 do begin ~諸々の処理で flg:=true; ~ if flg=true then x[i]:= stringgridの選択されたRow番号(はじめからフォーカスされている番号でなく) ~諸々の処理で flg:=false; ~ end; セル表示 DelphiのStringGridの一つのセル内に 123 456 789 と1~9の数字を表示したいのですが、可能でしょうか。 欲張りですが 1 3 56 7 などのように、全部ではなく1~9の数字の幾つかを表示 できればと思います。 BCB:StringGridでgoEditingを操作すると不思議な動きをする C++ Builder5で不思議な動きをしています。 StringGridで、OptionにgoEditingを操作し、修正不可のセットをしました。 StringGrid1->Options = StringGrid1->Options >> goEditing; その後、StringGridのどこかのセルをクリックして、そのセルをスクロールバー で隠したり表示したりすると、修正不可セット直前にカーソルのあったセルの 内容が現れてきます。 具体例を示すと、1行3列目にカーソルのある状態で、修正不可にセットします。 次に、5行5列目をクリックした後、スクロールバーでこのセルを見えない様に StringGridをスクロールします。 再度、5行5列目が見えるようにスクロールを戻すと、1行3列目に入っていた 内容(文字)が表示されているのです。 この時、別のセルをクリックすると、5行5列目には本来の内容(文字)が表示 されて来ます。 別のセルをクリックすると、正しい内容に戻りますので、表示だけの問題だと 思うのですが、不思議で困った現象です。 なんとか、これを回避する方法はないでしょうか? StringGridでの文字入力制限 C++BuilderでStringGridで、GoEditingプロパティをtrueに設定してセルの内容を編集するときに、数字のみ受付可能にするにはどうしたらいいでしょうか?よろしくお願いします。 Delphi2007のCheckBox.Font.Colorの変更 Delphi2007でTCheckBoxのFont.Colorを変更したいのですが、オブジェクトインスペクタで変更しても色が変わりません。何か特別な方法があるのでしょうか。それともバグ? よろしくお願いいたします。 ドラッグアンドドロップ Delphi Personal6のStringGridのセル間でドラッグアンドドロップする方法を教えて下さい。ラベルコンポーネントからグリッドセルへというようなコンポーネント間のD&Dはできたのですが、セル間のD&Dができません。よろしくお願いします。 Delphi 6 について 現在、Delphi 6 を使ってプログラミングの 勉強をしているものです。 いろいろなサイトを回ってみたんですが、どうにも 分からないので質問をしました。 Delphiでフォーム上にボタンとかオプションボタンなどを 配置して作っていますが、そのデザイン?が Win98風の灰色のペタンコボタンなので、 WinXP風の綺麗なボタン(触れたら光る奴)の デザインに変えたいんですが、可能でしょうか? もしできるとしたら、どのようにすればいいのでしょうか? また、別の開発環境で出来る、という場合はその環境を 教えていただきたいです。 Delphiにした理由は、無料で使えて、かつランタイムがいらない (exe単体、または複数のDLLを用意するだけで配布可能) うえに、プログラミング入門には分かりやすいと思ったからです。 StringGridの内容をクリップボードにCOPYしたい Borland C++ Builder 5 を使っています。 StringGridの内容をクリップボードにCOPYするプログラムを作っています。 Excelに貼り付けるのが目的なので、Tab区切りのデータにしています。 下に示したソースで実現できましたが、非常に遅いのです。 100行とか200行ならアッという間なのですが、2,000行、3,000行となるとかなり待たされます。 時間を食っているのは(2)の部分のようです。 もう少しスマートに、短時間でCOPYしたいのですが、方法はないものでしょうか? ◆ソースの解説 StringGridの21列分を、行数だけクリップボードにCOPYします。 (1) StringGridの各行、各列をLOOPしてセルに格納されている文字列長の合計を求めます。 Tab区切りにするため、各セルごと1バイト加算します。 また、各行ごと改行を入れるため、これも1バイト加算します。 (2) 合計容量が計算できたら、メモリーを動的確保し、もう一度LOOPをしながら、文字列をCOPYします。 セルごとにTab、行ごとに改行も追加します。 (3) 最後にクリップボードをクリアしてCOPYします。 int cnt = StringGrid1->RowCount; int size = 0; //StringGridのサイズ(文字長)をカウントする ------ (1) for(i=0;i<cnt;i++){ for(k=0;k<21;k++){ size += strlen(StringGrid1->Cells[k][i].c_str()) + 1; } size++; } //メモリーを確保して、StringGridをCOPYする -------- (2) cb = new char[size]; strcpy(cb,""); for(i=0;i<cnt;i++){ for(k=0;k<21;k++){ strcat(cb,StringGrid1->Cells[k][i].c_str()); strcat(cb,"\t"); //Tab区切りの文字列にする } strcat(cb,"\n"); } Clipboard()->Clear(); // -------- (3) Clipboard()->AsText = cb; なお、サイズがintに収まるかというチェックとか、メモリーの解放をする、といったことも必要ですが、記述を省略しました。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム delphi delphi delphiでDirectxを使ったゲームを作ろうと思いQuadrupledというコンポネートをインストールしようとしましたが、マニュアルの通りやってもできませんでした。delphiのバージョンが古いからでしょうか。 (delphi3を使っています。) Delphiに関して 「このプログラム解読できません!」 こんにちは。このプログラムが解読不可です。StringGridの1列目と2列目の各セルの内容を右寄せにする ということで、実行させると確かにそうなるのですが、どういう構造かいまいち分かりません。特に 'Rect.Top:=Rect.Top+2;' のところなんて"なんで+2なの~?"ってホントに謎です。gdFixedとかFillRectとかヘルプに書いてあることとなんか違う気がして....DT_RIGHTもわかりません。 このプログラムの解説お願いします! procedure TForm1.StringGrid1DrawCell(Sender:TObject;ACol,ARow:Integer;Rect: TRect; State: TGridDrawState); begin If Not (gdFixed In State) And (ACol In [1,2]) Then Begin StringGrid1.Canvas.FillRect(Rect); Rect.Top := Rect.Top + 2; If (ACol = 1)or(ACol = 2) Then DrawText(StringGrid1.Canvas.Handle, PChar(StringGrid1.Cells [ACol,ARow]),Lengthend(StringGrid1.Cells [ACol,ARow]),Rect,DT_RIGHT) end; end; Delphiに関して 今、VCでGUIを構築しているのですが、その一部をDelphiで構築しなければ ならない状況になっています。 VCとDelphiの混在は可能でしょうか? あと、Delphiのメンテを考えたとき、VCの技術者がDelphiをすぐ理解できますか? あと、DelphiはGUIツールとしてはどんなもんでしょう? 何か、ヒント、コメントあったらください。 ちょっと漠然とした質問ですみません。m(__)m StringGrid1で画面におさまりきらない行をForm2から遠隔スクロールするには? Form1のStringGrid1で、画面におさまりきらない行を、Form2から次のようなやり方で遠隔スクロールさせたいのですがうまくいきません。目的の矩形 StringGrid1.Cells[ col, row ] をちゃんとselect しているはずなんですが、その行の位置が画面表示行よりも下方にあるために、それが見えないのです。御教示いただければありがたいのですが。 procedure TForm2.Next1Click(Sender: TObject); var R : TGridRect; begin with R do begin Left := Form1.StringGrid1.Col; Top :=Form1.StringGrid1.Row+1; Right := Form1.StringGrid1.Col; Bottom := Form1.StringGrid1.Row+1; end; Form1.StringGrid1.Selection := R; end; 何年ぶりかで Delphi5で遊びはじめましたが、Delphi6から導 何年ぶりかで Delphi5で遊びはじめましたが、Delphi6から導入された「TValueListEditor」というコンポーネントをDelphi5で使ってみたいのです。 可能でしょうか? 可能であればドコで入手できますか? またDelphi6はその後フリーソフトになったことも知りました。 こちらも入手が今でも可能なら、方法を教えてください。 Delphi Delphi delphi初心者です。 ボタンを押すたびに、(0からはじめて)1ずつ足して、その値が空白(Edit1.Text)に 表示をしていくいくプログラムを作りたいのですが どうすればいいのでしょうか。 初期値の設定から、できるだけ簡単なコードを使って教えていただきたいです。 よろしくお願いします。 Delphi Delphi 2010についてお問い合わせ致します。 VB 2008用のSDKがあります。 販売元に問い合わせしたところ Delphiに対応するかわからないという回答でした。 試してみたいのですが、SDKをインストールしたことがなく、 インストール方法がわかりません。 どのたか、おわかりのかたいらっしゃいましたら、 ご教授お願いいたします。 Delphi Delphiの初心者です。他の方が作成したプログラムを修正することになったのですが、ソースを開くとTcommXがないと メッセージが出ます。 TcommXはフリーのコンポーネントのようなんですが、どこで入手可能なんでしょうか? 動作環境はDelphi6/WindowsXpです。 よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
補足
ありがとうございます。 とても良いコンポーネントと思います。 でも、 悲しいです。 インストールの方法がわかりません。 DLファイルのドキュメントを読んでも理解できません。 >通常のコンポーネントインストール手順 ってどうするんでしょう? よろしければ、参考サイトでも紹介頂ければ幸です。