喫茶XRAYトップページ

[スレッド全体
]

[7381] Re4:Form1.Components[]の使い方返信 削除
2014/3/18 (火) 20:26:13 taki
> クリックするLabelを変えるとComboBoxのドロップダウンリストの要素を
> 変える手続きSetDataComboBoxをもう少し工夫しないといけないと思います。
>
> 考えてみます。
>


度々すみません。m(_ _)m

AComponentIndexにこだわり過ぎていました。

procedure TForm1.SetDataComboBox(oya:string);
begin
  if oya = 'Label1' then ComboBox1.Items.CommaText := 'タイ,マグロ,シャケ';
  if oya = 'Label2' then ComboBox1.Items.CommaText := 'たんぽぽ,すみれ,パンジー';
  if oya = 'Label3' then ComboBox1.Items.CommaText := 'サクラ,ウメ,マツ';
end;

にして、

// label1,label2,label3で共有するイベント
procedure TForm1.Label1Click(Sender: TObject);
begin
    (省略)
  // ComboBoxにデータをセット
  SetDataComboBox(TLabel(Sender).Name);
    (省略)
end;

とすれば良いみたいです。

それと、グローバル変数AComponentIndexを使わずに、ComboBox1.Tagを変数として
使ってもプログラムは動きました。



[7384] Re5:Form1.Components[]の使い方返信 削除
2014/3/18 (火) 21:11:54 snail
▼ takiさん

何がしたいか理解できていませんが

procedure TForm1.SetDataComboBox(oya:string);
     ↓
procedure TForm1.SetDataComboBox(oya:TObject);
begin
  if oya = Label1 then
    ComboBox1.Items.CommaText := 'タイ,マグロ,シャケ'
   else if oya = Label2 then
    ComboBox1.Items.CommaText := 'たんぽぽ,すみれ,パンジー'
   else if oya = Label3 then
    ComboBox1.Items.CommaText := 'サクラ,ウメ,マツ';
end;

と書いてもいいですよね。



[7385] Re6:Form1.Components[]の使い方返信 削除
2014/3/18 (火) 22:54:35 taki
▼ snailさん

> 何がしたいか理解できていませんが

はい。ComboBoxをそのまま使わせてもらえたらこんな苦労を
しなくて済むのに。

> procedure TForm1.SetDataComboBox(oya:TObject);

なるほど。
名前に変えなくてもObjectで比較すればいいんですね。
また、if ○ then else if ○…を使うのがベストですし。
いっぱい無駄な事をしています…。

大変勉強になります。

話は変わりますが、Labelにはhandleが無いんですね。
ComboBox1.TagにLabelのhandleを代入したら何とかできるかもと
考えたのですが砕け散りました。


[7386] Re7:Form1.Components[]の使い方返信 削除
2014/3/19 (水) 09:19:38 Mr.XRAY
う〜ん.なるほど.
コンポーネントの実行時管理は結構面倒ですね.
複数の種類の違うコントロールの連携ですね.

どんな方法がいいんでしょうね.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82