Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 10:32   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Цикл выполняется полностью независимо от того, чекнут ли чекбокс или нет(
о!!
посмотрел на код.
Цитата:
Код:
Form1.advstringgrid1.GetCheckboxState(0, I, state)
что это за I ?! Вы хотите проверить чекбокс в КАЖДОЙ строке грида?!
Ну так тогда проверка должна быть ВНУТРИ цикла по строкам! (предыдущий вариант )

Если же Вы хотите чего-то другого, то, простите, я Вас не понимаю!
У Вас есть грид, в некоторых строчках грида стоят чекбоксы. Что Вы хотите получить?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.11.2012, 10:46   #12
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
У Вас есть грид, в некоторых строчках грида стоят чекбоксы. Что Вы хотите получить?!
Есть грид, чекбоксы стоят от 1 до -1 строках в 0 колонке.
Мне надо выполнять некое действие только для чекнутых строк(row).
В данном случае выполнять цикл. Но, если ни одна строка не чекнута, то выполнять другое действие вне цикла.
_ZixeL_ вне форума Ответить с цитированием
Старый 29.11.2012, 10:54   #13
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
AnySelected:=false;
for I:=FixedRows to RowCount do
begin
  if GetCheckboxState(0,I,State) then
  begin
    AnySelected:=true;
    ...
  end;
end;
if not AnySelected then
begin
...
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 29.11.2012, 11:02   #14
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Slym, спасибо за ответ. Но я пользуюсь advstringgrid от TMS.Там немного по другому с чекбоксами. Я чекбоксы создаю так

Код:
for i := 2 to advstringgrid1.RowCount -1 do
begin
advstringgrid1.AddCheckBox(0,i,false,false);
end;

Последний раз редактировалось _ZixeL_; 29.11.2012 в 11:05.
_ZixeL_ вне форума Ответить с цитированием
Старый 29.11.2012, 11:10   #15
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Цитата:
Сообщение от _ZixeL_ Посмотреть сообщение
Делал так

Код:
if Form1.advstringgrid1.GetCheckboxState(0, I, state) = state then
begin
 for I := Form1.advstringgrid1.FixedRows to Form1.advstringgrid1.RowCount do  begin
И не работало. Никакой реакции вообще.
Может быть дело в том, что вы пытаетесь использовать переменную цикла I вне цикла?
superedward вне форума Ответить с цитированием
Старый 29.11.2012, 11:40   #16
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от superedward Посмотреть сообщение
Может быть дело в том, что вы пытаетесь использовать переменную цикла I вне цикла?
Да по-разному пытался уже(
блин, и как теперь быть?
_ZixeL_ вне форума Ответить с цитированием
Старый 29.11.2012, 13:59   #17
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Книжки читать или нанять программиста...
Проблема простецкая, ответы даны, перевари и пиши. что напишешь давай сюда
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 29.11.2012, 15:53   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В данном случае выполнять цикл. Но, если ни одна строка не чекнута, то выполнять другое действие вне цикла.
код в сообщении #13 решает эту задачу!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2012, 03:04   #19
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
код в сообщении #13 решает эту задачу!
Можно поподробней?
_ZixeL_ вне форума Ответить с цитированием
Старый 30.11.2012, 05:28   #20
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Спасибо всем. Особенно Slym"у

Решил так

Код:
procedure TNewThread.Execute;
var
  other: string;
  i,p: integer;
  State: Boolean;
  AnySelected: boolean;
begin
  for I:= Form1.advstringgrid1.FixedRows to Form1.advstringgrid1.RowCount-1 do begin
        if Form1.advstringgrid1.GetCheckboxState(0, i, state) = state then
      begin
       AnySelected:=true;
      other := datamodule2.idHttp1.Get('http://www.iptrackeronline.com/index.php?ip_address=' + Form1.advstringgrid1.Cells[2, i]);
      //2  Страна
      Form1.advstringgrid1.Cells[13, i] := Pars('name="T2" size="20" value="', other, '"></td>');
      //4 Регион
      if Pos('name="T8" size="20" value="n/a ()">', other) = 0 then
        Form1.advstringgrid1.Cells[14, i] := Pars('name="T8" size="20" value="', other, '"></td>')
      else
      begin
        Form1.advstringgrid1.Cells[14, i] := ' n/a';
      end;
      //3  Город
      Form1.advstringgrid1.Cells[15, i] := Pars('name="T9" size="20" value="', other, '"></td>');
      //4 Провайдер
      Form1.advstringgrid1.Cells[12, i] := Pars('name="T7" size="20" value="', other, '"></td>');
      //----
      end;

  end;
  if not AnySelected then
  showmessage('123');

end;
_ZixeL_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц