Вниз
Скачать: CL | DM;

Динамическое PopupMenu   Найти похожие ветки 

 
2nd   (2004-12-21 20:15) [0]

Приветствую! Помогите советом. Есть DBGrid, есть PopupMenu. В меню перечислены поля грида и при выборе, поля в гриде скрываются/показываются. Естественно, содержимое грида будет меняться. Т.е. при заполнении DBGrid"а нужно переделывать меню и для каждого элемента писать обработчик вида N[i]Click -> DBGrid1.Fields[i].Visible := True/False; У кого-нибудь есть идеи как это сделать? Ничего в голову не приходит :(


 
2nd   (2004-12-21 20:17) [1]

Или какой-нибудь альтернативный вариант? Но, думается, с меню было бы красивее...


 
Hmm ©   (2004-12-21 20:46) [2]

Не вижу надобности делать именно "динамическое меню". Сделай "обыкновеное", выставляй галочки у видимого поля и убирай их у скрываемого... в чем проблемма?


 
2nd   (2004-12-21 23:33) [3]

Сейчас в гриде три стобца, через минуту - двадцать.


 
Dolt ©   (2004-12-22 01:26) [4]

Примерно так - естессна надо будет добавить проверок

procedure TForm1.PopupMenu1Popup(Sender: TObject);
Var
 i:integer;
 T:TMenuItem;
 s:String;
begin
 for i:=0 to PopupMenu1.Items.Count-1 do begin
   PopupMenu1.Items[i].Visible:=false;
   end;
 For i:=0 to DBGrid1.Columns.Count-1 do begin
   s:="mi"+DBGrid1.Columns[i].FieldName;
   T:=TMenuItem(PopupMenu1.FindComponent(s));
   IF T=nil Then begin
     t:=TMenuItem.Create(PopupMenu1);
     T.OnClick:=myClick;
     T.name:=s;
     T.Caption:=DBGrid1.Columns[i].Title.Caption;
     T.tag:=i;
     PopupMenu1.Items.Add(t);
     end;
   T.Visible:=true;
   T.Checked:=DBGrid1.Columns[i].Visible;
   end;
end;

procedure TForm1.myClick(Sender: TObject);
begin
   DBGrid1.Columns[TMenuItem(sender).Tag].Visible:=not TMenuItem(sender).Checked;
end;


 
Dolt ©   (2004-12-22 01:30) [5]

Тэкс... ошибка, tag нужно поставить после енда

--    skip    ----
     T.Caption:=DBGrid1.Columns[i].Title.Caption;
     PopupMenu1.Items.Add(t);
     end;
   T.tag:=i;
   T.Visible:=true;
--    skip    ----


 
2nd   (2004-12-22 02:10) [6]

2Dolt
Вот за это спасибо :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
14-1103446927
AlterEgo of WondeRu
2004-12-19 12:02
2005.01.09
ОТО. Черные и белые дыры...


1-1103576127
Logun
2004-12-20 23:55
2005.01.09
ПРОБЛЕМА с Delphi+Flash!


4-1100913538
webmaster
2004-11-20 04:18
2005.01.09
Клавиша Windows на клавиатуре


11-1084948829
RTWolf
2004-05-19 10:40
2005.01.09
Как не имея полос прокрутки в ListView передвигаться по списку?


8-1096883406
rus9
2004-10-04 13:50
2005.01.09
Переместить линию по канве




   Наверх