Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

StringGrid   Найти похожие ветки 

 
Ven   (2002-09-25 11:57) [0]

Привет мастера. Как проверить все Cells в StringGrid и позмолить их редактирование преама в StringGrid. Если написать:

for(y=0; y <LIN ;y++)
for(x=0; x < COLON ;x++)
if(StringGrid1->Cells[x][y].IsEmpty())
{
StringGrid1->Col=x;
StringGrid1->Row=y;
StringGrid1->EditorMode=true;
FocusControl(StringGrid1);
}


то остановится только на последнем исправление, Подскажите как сделати чтоб исправить их по порятку.


 
MBo ©   (2002-09-25 12:07) [1]

Я не понял, что ты хочешь сделать.
Для разрешения редактирования надо в Options goEditing поставить True. Для программной записи Cells[x,y]:=somestring;


 
Ven   (2002-09-25 12:19) [2]

Нужно проверите все Cells и исправить пустые. Код нписаныи выше останавливается на последнем исправление, а нижно чтобы он позволял исправить все пустые Cells.


 
MBo ©   (2002-09-25 12:21) [3]

Вставь break после focuscontrol


 
Ven   (2002-09-25 12:24) [4]

Тогда будет только первая


 
troits ©   (2002-09-25 12:25) [5]

:) 5 баллов.


 
Ven   (2002-09-25 12:28) [6]

Тогда будет только первая.


 
troits ©   (2002-09-25 12:29) [7]

Может, на OnSetEditText запускать опять цикл?


 
Ven   (2002-09-25 12:32) [8]

Тогда зациклица


 
gek ©   (2002-09-25 12:32) [9]

может так

for(y=0; y <LIN ;y++)
for(x=0; x < COLON ;x++)
if(StringGrid1->Cells[x][y].IsEmpty())
{
StringGrid1->EditorMode=true;
FocusControl(StringGrid1);
if InputQuery("enter data","enter data",s) {
Cells[x][y]=s;
}
continue;
}


 
Ven   (2002-09-25 12:36) [10]

Можна и так но хателась преама в StringGrid.


 
MBo ©   (2002-09-25 12:42) [11]

troits © (25.09.02 12:29)
не устраивает?


 
troits ©   (2002-09-25 13:19) [12]

Действительно не работает.
Есть вариант: кладем на форму таймер и на событие OnTimer

procedure TForm1.Timer1Timer(Sender: TObject);
const
BoolStr : array [Boolean] of string = ("False", "True");
begin
if not StringGrid1.EditorMode then FindEmpty;
end;

procedure TForm1.FindEmpty;
var
X, Y: Integer;
begin
for Y := 0 to StringGrid1.RowCount - 1 do
for X := 0 to StringGrid1.ColCount - 1 do
if StringGrid1.Cells[X, Y] = "" then
begin
StringGrid1.Col := X;
StringGrid1.Row := Y;
StringGrid1.EditorMode := True;
FocusControl(StringGrid1);
break;
end;
end;



 
Ven   (2002-09-25 13:40) [13]

А без таймер (только как временое решение) знает кто.


 
NP-237 ©   (2002-09-25 13:47) [14]

Вешай проверку на onExit StringGrid
и не позволяй выходить пока все не заполнено
При запуске выполняй onExit принудительно.


 
Ven   (2002-09-25 16:08) [15]

onExit срабатывыает при выходе из StringGrid
но не после редактирования Cells.


 
Ven   (2002-09-25 17:12) [16]

Спосибо всем за советы но сделал я так :

void TForm1::SearchBadInGrid(int x, int y)
{
for( ; (y < LIN )?(!StringGrid1->Cells[x][y].IsEmpty()):false ; y++)
{
for(; (x < COLON)?(!StringGrid1->Cells[x][y].IsEmpty()):false; x++);

if(x==LIN )
x=0;
else
break;
}

if(y < LIN)
CorectedGrid(x,y);
}

void TForm1::CorectedGrid(const int x,const int y)
{
StringGrid1->Col=x;
StringGrid1->Row=y;
StringGrid1->EditorMode=true;
FocusControl(StringGrid1);
}

void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{
if(Key == "\n" || Key == "\r" || Key == "\t")
{ SearchBadInGrid(StringGrid1->Col, StringGrid1->Row); return;}
}
//--------------------------------------------

если у кого есть другие идеи напишите vladr@basa.md


 
troits ©   (2002-09-25 17:26) [17]

>Ven (25.09.02 17:12)
Еще надо отслеживать переход на другую ячейку мышью, утрату компонентом фокуса ....



Страницы: 1 вся ветка

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
4-21333
stainer
2002-08-21 14:32
2002.10.07
не получается изменить стиль дилогового окна


3-20934
Gaber
2002-09-11 10:35
2002.10.07
DBGrid


6-21187
spiderman
2002-05-08 12:22
2002.10.07
Please...


3-20933
Serg&Sn
2002-09-17 17:20
2002.10.07
Как прямо в запросе сделать округление!


8-21158
Riz
2002-06-04 07:47
2002.10.07
Создание графики в консольном приложении