Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-20886
Hooch
2002-09-16 15:09
2002.10.07
табличка foxpro


3-20914
Андреев Максим
2002-09-16 13:43
2002.10.07
TAdoDataSet


14-21200
VictorT
2002-09-04 15:01
2002.10.07
Поиск по сайту


4-21328
Dimik
2002-08-20 17:35
2002.10.07
Изменение системных параметров - рабочий стол


4-21319
Dimik
2002-08-21 00:43
2002.10.07
Можно ли изменить отображаемую папку в конкретном окне Эксплорера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский