Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактор колонок для DbGridEh 
:(
    Опции темы
Alex
Дата 3.10.2006, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Vas
Дата 4.10.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Спасибо, нужный модуль. С меня [+]

Только нашел один глючок. Если колонке грида не определено поле из датасета, то при попытке показать frmColumnEdit вываливается AV.


Это сообщение отредактировал(а) Vas - 4.10.2006, 16:17


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Alex
Дата 4.10.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Цитата(Vas @  4.10.2006,  16:29 Найти цитируемый пост)
Если колонке грида не определено поле из датасета, то при попытке показать frmColumnEdit вываливается AV.

по подробней можно?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Alex
Дата 4.10.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Скачай модуль еще раз, AV возникать не будет, но и колонки для которых не задан Field я не покажу в редакторе


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Akella
Дата 11.10.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Вот предлагаю ещё свой вариант (не без участия Alex`а) с использованием TPopupMenu

1. Кидаем на форму две компоненты TPopupMenu, я назвал его pmColumns2
и pmCustomSelect - это уже всплывающее меню типа Добавить, Изменить, Удалить, сами строите как хотите
pmCustomSelect будет всплывать, когда щёлкните НЕ по заголовку грида.

2.
Код

//в событии грида
procedure TfmApartSearch.dbgApart3ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
//узнаём, где тыцнули мышей
 if TDBGridEh(sender).MouseCoord(MousePos.X, MousePos.Y).Y <> 0 then
     TDBGridEh(sender).PopupMenu:= pmCustomSelect
   else
     TDBGridEh(sender).PopupMenu:= pmColumns2;
end;


3. Создаём процедуру нажатия на пункт меню
Код

procedure TfmApartSearch.ShowHideColumn(MenuItemCaption:String);
Var
 i:Cardinal;
begin
  if (not (ActiveControl is TDBGridEh)) then exit;

  MenuItemCaption := StringReplace(MenuItemCaption,'&','',[rfReplaceAll, rfIgnoreCase]);
  with TDBGridEh(ActiveControl) do
    For i := 0 to Columns.Count-1 do
      if Columns[i].Title.Caption = MenuItemCaption
       then Columns[i].Visible := not Columns[i].Visible;
end;



procedure TfmApartSearch.MenuItem1Click(Sender: TObject);
begin
  ShowHideColumn((sender as TMenuItem).Caption);
end;


4. В событии всплывания меню строим список(создаём пункты меню)
Код

procedure TfmApartSearch.pmColumns2Popup(Sender: TObject);
Var
 i:Cardinal;
 MenuItem : TMenuItem;
begin
  if (not (ActiveControl is TDBGridEh)) then exit;
  with TDBGridEh(ActiveControl) do  begin
//устанавливаем Caption и видимость меню
     pmColumns2.Items.Clear;
     For i := 0 to Columns.Count-1
     do begin
       MenuItem := TMenuItem.Create(pmColumns2);
       MenuItem.Caption := Columns[i].Title.Caption;
       MenuItem.Checked := Columns[i].Visible;
       MenuItem.OnClick := MenuItem1Click;
       pmColumns2.Items.Add(MenuItem);
     end;//for
 end;//with
end;

Всё. Щелкая по заголовку грида видим pmColumns2. Щёлкаем по данным грида видим pmCustomSelect.

Это сообщение отредактировал(а) Akella - 11.10.2006, 16:47
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1175 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.