Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MDI+StringGrid+Button, Динамические кнопки в MDIChild 
V
    Опции темы
~FoX~
Дата 24.12.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Похоже моя глухота прогрессирует и повредила мне моск, пол дня бьюсь... smile 
Суть такова:
Есть MDIForm, в ней соответственно генирятся MDIChild-ы 
Код

procedure TMainRGC.ToolButton1Click(Sender: TObject);
begin
  Application.CreateForm(TEditForm, EditForm);
//  TEditForm.Create(Self);
end;

В чилде есть стринггрид в котором по клику появляются кнопки и комбобоксы, создаваемые динамически 

Генерим:
Код

var
  BOpen: TButton;
//........................

procedure TEditForm.FormCreate(Sender: TObject);
begin
  with Sender as TEditForm do begin
    Bopen := TButton.Create(Self);
    BOpen.Parent := Self;
    BOpen.Height := StringGrid1.DefaultRowHeight;
    BOpen.Width := StringGrid1.DefaultRowHeight;
    BOpen.Caption := '*';
    BOpen.OnClick := BOpenClick;
    BOpen.Visible := false;
  end;
end;


Показываем кнопу по клику на гриде
Код

procedure TEditForm.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
var
  CR: TRect;
begin
  with (Sender as TStringGrid) do begin
    if ACol = 3 then begin
      CR := StringGrid1.CellRect(ACol, ARow);
      BOpen.Left := CR.Right - BOpen.Width+3;
      BOpen.Top := CR.Top+Top+2;
      BOpen.Visible := true;
    end //if
    else BOpen.Visible := false;
  end; //with
end;

В общем то все нормально работает если дочернее окно одно или я работаю с последним открытым окном, но если их много, то в какое бы окно я не тыкнул, кнопка появляется только в последнем...
Пробовал указывать форму и сам грид в качестве предка кнопке BOpen.Parent := .....
Пробовал обращаться к гриду так   
Код

with (Sender as TEditForm).StringGrid1 do begin

Вызывает инвалид типкаст  smile 

З.Ы.: Первый раз делаю МДИ приложение  smile 



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Frees
Дата 24.12.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



BOpen - это переменная в юните а не в классе она одна на всех, и ссылка на предыдущие затирается последним

перенеси ее в privat например

Это сообщение отредактировал(а) Frees - 24.12.2009, 15:17


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
~FoX~
Дата 24.12.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Frees,  smile  Я просто мега лох... Переносил же в класс формы, не додумался в приват засунуть... Полностью оправдываю свою подпись  smile 



Это сообщение отредактировал(а) ~FoX~ - 24.12.2009, 15:37


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Frees
Дата 24.12.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(~FoX~ @  24.12.2009,  18:32 Найти цитируемый пост)
Переносил же в класс формы, не додумался в приват засунуть...

privat ли че другое не суть лишь бы у каждого экземпляра своя..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
~FoX~
Дата 24.12.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Frees, Само собой  smile 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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