![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Столкнулась с интересной проблемой.
Есть форма с 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;Подскажите как это исправить ![]() |