ホーム
Top.Mail.Ru Yandeks.Metrika
フォーラム: "Main";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

ダウン

メニュー項目番号を決定する 似ている枝を探す


T2   (2001-12-16 07:29) [0]

プログラムでメニューを作成します。 使用可能なディスクの名前をポップアップメニューにプッシュします(どれだけあるかは事前にはわかりません)。 できれば1つの処理手順で、選択されたメニュー項目を見つける方法は?



KilkennyCat   (2001-12-16 08:02) [1]

私はこうします:

создаю процедуру обработки, на которую переправляю клики со всех пунктов. типа:

procedure TForm1.popClick(Sender: TObject);
始まる
if sender = b then showmessage("b"); //нажат пункт с именем b
if sender = a then showmessage("a"); //нажат пункт с именем а
終わり

конечно, при большом количестве пунктов нужно индексироваться.



T2   (2001-12-16 08:59) [2]

Да, но имена "a" и "b" неизвестны до создания. Этих пунктов меню нет при
компиляции и при попытки сравнить sender=a выдается ошибка "Undeclared identifier: "a". Мож на коде будет нагляднее?

procedure TMain.pu2Popup(Sender: TObject);
var s:tstringlist;i:byte;NewItem: TMenuItem;f:int64;d:string[1];
始まる
pu2.Items.Clear;s:=tstringlist.create;
si.GetDriveList(s);for i:=0 to s.Count-1 do begin
NewItem := TMenuItem.Create(Self);
d:=copy(uppercase(s.strings[i]),1,1);
f:=diskfree(ord(d[1])-64);If f=-1 then f:=0;
NewItem.Caption := "&"+d+": ("+Inttostr(f)+" байт)";
newitem.OnClick:=ddd;
imagelist1.getbitmap(0,newitem.Bitmap);
pu2.items.Add(NewItem);
end;s.free;
終わり

procedure tmain.ddd(sender:tobject);
始まる
if sender=c1 then showmessage("Disk < C > select"); // Так ?
終わり

Все верно?



KilkennyCat   (2001-12-16 09:07) [3]

гм... по-моему, надо создать и NewItem.Name (например, а)



Anatoly Podgoretsky   (2001-12-16 10:11) [4]

У тебя NewItem.Caption вторая буква имя диска, этого достаточно для идентификации



Dmitriy(new)   (2001-12-16 12:09) [5]

procedure tmain.ddd(sender:tobject); var d:string[1];
始まる
d:=copy(TMenuItem(sender).Caption,2,1);
showmessage("Disk <"+D+"> select");
// if sender=c1 then showmessage("Disk < C > select"); // Так ?
終わり



Петрович   (2001-12-17 04:47) [6]

А можно попробовать использовать свойство Tag!



GennadyS   (2001-12-17 08:45) [7]

Я всегда в подобных случаях применял свойство TAG. И в зависимости от кол-ва пунктов точно знал на каком кликаешся. (для всех пунктов единая процедура обработки) В этой процедуре:

case (sender as TComponent).tag of
1: // обработка диска Б
2: // --/-- С
...



ページ: 1 全枝

フォーラム: "Main";
現在のアーカイブ:2002.01.08;
ダウンロード:[xml.tar.bz2];

2階









メモリ:0.83 MB
時間:0.045 c
3-21943
オレオン
2001-12-05 10:54
2002.01.08
テーブルレベルの使用方法


3-21996
vinni2000
2001-12-06 11:47
2002.01.08
クエリを使用してクエリからデータを選択する方法


6-22286
レイ
2001-10-08 18:07
2002.01.08
人! ICQが必要です。


6-22285
極めて重要な
2001-10-09 12:34
2002.01.08
選択の問題


3-21958
bk
2001-12-05 19:15
2002.01.08
Pomogite kto moget adoユニカルノマー





アフリカーンス語 アルバニア語 Arabic アルメニア語 アゼルバイジャン語 バスク ベラルーシ Bulgarian カタロニア語 中国語(簡体字) 中国語(繁体字) クロアチア チェコ語 デンマーク語 Dutch 英語 エストニア語 タガログ語 Finnish フランス語
ガリシア語 ジョージアン ドイツ語 ギリシャ語 ハイチ語 ヘブライ語 ヒンディー語 ハンガリー語 アイスランド語 Indonesian アイリッシュ イタリア語 日本語 Korean ラトビア語 リトアニア マケドニア語 Malay マルタ語 Norwegian
ペルシア語 ポリッシュ ポルトガル語 ルーマニア Russian セルビア Slovak スロベニア語 スペイン語 スワヒリ語 Swedish Thai トルコ語 ウクライナ語 ウルドゥー語 ベトナム語 ウェールズ語 イディッシュ語 ベンガル語 ボスニア語
セブアノ語 エスペラント グジャラート語 ハウサ語 モン族 イボ ジャワ語 カンナダ語 クメール語 ラオ語 ラテン マオリ語 マラーティー語 モンゴル語 ネパール語 パンジャブ語 ソマリ タミル語 テルグ語 ヨルバ語
ズールー語
Английский Французский Немецкий Итальянский ポルトガル語 Русский Испанский