|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
поиск пустых ячеек
Здраствуйте, у меня такой вопрос.
как мне организовать поиск пустых ячеек в стринггриде и каким-нибудь образом их выделить. поиск с 5й строки по 278 столбец.. знаю что там нужно мучить функцию pos но ума не приложу как... заранее благодарен извините за такой вот вопрос... |
#2
|
|||
|
|||
не надо её мучать, если Length(ячейка) = 0 - значит она пустая, ну а всё остальное - циклом.
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#3
|
|||
|
|||
Код:
var i, j : integer; begin for i := 5 to StringGrid11.RowCount - 1 do for j := 1 to StringGrid11.ColCount - 1 do if Length(StringGrid11.Cells[i,j]) = 0 then Begin {Выделение ячейки} End; с длиной стрики = 0 разобрался, а выделить ту самую пустую ячейку как? Последний раз редактировалось Мишка-90, 27.04.2011 в 13:15. |
#4
|
|||
|
|||
вот так видимо:
Код:
if Length(StringGrid11.Cells[i,j]) = 0 then begin StringGrid11.Col := j; StringGrid11.Row := i; break; // обрывает цикл, что бы остановится на выделенной ячейке end; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 27.04.2011 в 13:34. |
#5
|
|||
|
|||
в результате оно проверяет только 1 столбец.
сделал так: Код:
if Length(StringGrid11.Cells[j,i]) = 0 then Begin StringGrid11.Cells[j,i] := '0'; StringGrid11.Col := j; StringGrid11.Row := i; break; ShowMessage('Пустая ячейка '); но не всю таблицу.. и фокус мгновенно пропадает. сообщение сделал, для того чтобы увидеть фокус (чтобы быстро всю таблицу не пробежало) |
#6
|
|||
|
|||
тогда убери break; фокус будет пропадать из-за ShowMessage, тогда сделай за место ShowMessage так, убери break; и:
перед циклом Код:
Memo1.Lines.Clear; Код:
Memo1.Lines.Add('Пустая ячека ' + IntToStr(j) + ', ' + IntToStr(i); взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#7
|
|||
|
|||
спасибо
всё замечательно заработало, но ещё вопрос.
как сделать так, чтобы оно нашло пустую ячейку и на ней остановилось, если второй раз при нажатиии этой же кнопки - след. ячейку показало... если сделать с break оно только первый столбец проверяет, без него - все как нужно... Messagee := MessageDlg('Choose Yes no or Cancel?', mtConfirmation, mbOKCancel, 0); case Messagee of IDOK : ; IDCANCEL : Break; end; Пытаюсь так, НО если нажать нет - переходит по строке дальше, если да - то по столбцу.. Последний раз редактировалось Мишка-90, 27.04.2011 в 14:03. |
#8
|
|||
|
|||
Код:
if MessageBox(Handle,'Choose Yes no or Cancel?','Question',MB_ICONQUESTION + MB_YESNO) = ID_YES then break; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#9
|
|||
|
|||
Спасибо гигантские =) нереально выручилии ))
но опять есть одно но.. после того как нажмёшь - кансел - и опять проверку делаешь, то что было заполненно нулями опять находится и заполняется нулём.. и так постоянно |
#10
|
|||
|
|||
а вы попробуйте сами решить эту задачу
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#11
|
|||
|
|||
спасибо за помощь ^_^
довёл до ума. вот решение: Код:
procedure TForm1.BitBtn1Click(Sender: TObject); var i, j : integer; Messagee : integer; begin StringGrid11.RowCount := 36; for i := 9 to 278 do for j := 5 to 35 do if Length(StringGrid11.Cells[i,j]) = 0 then Begin Begin StringGrid11.Row := j; StringGrid11.Col := i; //break; Messagee := MessageDlg('Продолжить поиск?', mtInformation, mbOKCancel, 0); case Messagee of IDOK : Continue; IDCANCEL : Exit; end; End; End; end; Последний раз редактировалось Мишка-90, 27.04.2011 в 17:06. |