Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.11.2012, 13:01
Аватар для Edinora
Edinora Edinora вне форума
Прохожий
 
Регистрация: 12.11.2012
Сообщения: 22
Репутация: 10
По умолчанию Вызов формы из StringGridа. Как осуществить?

Столкнулась с интересной проблемой.
Есть форма с StringGrid, При нажатии ячейки я ввожу туда
значения в виде (счет1) : (счет2). Делала я это с помощью TMaskEdit. И все работало:
Код:
procedure TForm2.MaskEdit1Change(Sender: TObject);
begin
StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=MaskEdit1.Text;
end;

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
MaskEdit1.Visible := false;
 if (gdFocused in State) then
    begin
      if (ACol<>ARow) then
        begin
          MaskEdit1.Visible := true;
          MaskEdit1.Text:=StringGrid1.Cells[ACol, ARow];
          MaskEdit1.Left := Rect.Left + StringGrid1.Left+2;
          MaskEdit1.Top := Rect.Top + StringGrid1.top+2;
          MaskEdit1.Width := Rect.Right - Rect.Left;
          MaskEdit1.Height := Rect.Bottom - Rect.Top;
         exit;
       end;
    end;
end;

Но для полной красоты мне не хватало указания времени когда проходила игра. Я решила добавить форму в которую записывались результаты и время. Добавила кнопку и прописала в ней событие открытия формы, но выкидывалась ошибка и я решила сначала сделать с помощью Message. С ним тоже проблем не возникло.
Код:
procedure TForm2.StringGrid1Click(Sender: TObject);
begin
bt:=true;
end;

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
if (bt=true) then //добавила, что бы срабатывало 1 раз после клика
Begin
 if (gdFocused in State) then
    begin
      if (ACol<>ARow) then
        begin
         bt:=false;
         ShowMessage('llllll');
         exit;
       end;
    end;
 end;
end;

А вот если заменить Message на вызов формы - возникают проблемы.
Запустить форму как Form.ShowModal, не выходит, только как просто Form.Show. Форма запускается, но открывается на всю форму в которой прописан StringGrid и не поддается редактированию. Закрыть ее тоже не удается. Фактически программа виснет.
Код:
procedure TForm2.btn3Click(Sender: TObject);
begin
  bt:=True;
  if (not Assigned(Form4)) then
      Form4:=TForm4.Create(Self);
      Form4.Show;
end;

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
if (bt=true) then
Begin
 if (gdFocused in State) then
    begin
      if (ACol<>ARow) then
        begin
         bt:=false;
         btn3.Click;
         exit;
       end;
    end;
 end;
end;

Подскажите как это исправить
__________________
По переживать и по сокрушаться - я всегда успею.
Так что, дайте мне порадоваться в свое удовольствие!
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025