Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

Динамическое 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 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.04 c
9-1095057364
BRemB
2004-09-13 10:36
2005.01.09
Определение координат точки


3-1101964594
Sirus
2004-12-02 08:16
2005.01.09
Нужно подробное описание работы объединения JOIN


1-1103490857
VaDima
2004-12-20 00:14
2005.01.09
Установка свойства Parent для TWebBrowser - нарушение работы


3-1102601051
Saska
2004-12-09 17:04
2005.01.09
Список ODBC источников.


1-1103182665
PEKAHT
2004-12-16 10:37
2005.01.09
DDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский