![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос по циклу,условию
Петрович07 © (2007-11-05 14:04:00)всем привет,у меня вопрос:
на form6 и на form10 есть stringgrid1. мне в зависимости от некоторого условия надо ставить менять в цикле
то подставлять form6 то from10 как это сделать?
for i := 1 to form10.StringGrid1.RowCount - 1 do
begin
for j := 0 to Form7.table_mnog.RowCount - 1 do
begin
if (Form7.table_mnog.Cols[0].Strings[j] = '#') and (Form7.table_mnog.Cols[1].Strings[j] > IntToStr(i)) then
begin
if (Form7.table_mnog.Rows[1].Strings[0] <> '') and (Form7.table_mnog.Rows[1].Strings[1] = '') and (Form7.table_mnog.Rows[2].Strings[0] = '#') then
begin
h := 0;
Form5.table_2.Cols[i].Strings[h] := Form7.table_mnog.Rows[j - 1].Strings[0];
end else
begin
for h := Form7.table_mnog.ColCount - 1 downto 0 do
begin
form5.table_2.Cols[i].Strings[h] := Form7.table_mnog.Rows[j - 1].Strings[Form7.table_mnog.ColCount - 1 - h];
end;
end;
Break;
end;
end;
end;
Ega23 (2007-11-06 16:04:00) [1]
> Но справку мне читать, а тем более что-то проверять и тестировать
> было уже лень.
Хочешь совет? Всегда читай справку и проверяй, прежде чем ответ давать.
Я так, в своё время, 80% своих ответов так и не давал.
Парень ты умный, но здесь скорость ответа не важна. А важен правильный ответ.
homm (2007-11-06 16:02:00) [2]> [21] Dib@zol © (06.11.07 16:00)
> И я не мудрствуя глюкаво решил что Form как переменная не
> есть указатель
вот тут ты и промахнулся…
Dib@zol (2007-11-06 16:00:00) [3]> Господи, ну не давай таких советов, тем более в "Начинающих".
Ух ты, меня уже до Господа повысили :) Продвигаюсь ;D
А привести пример с пойнтерами я решил из-за [14]. Там Петрович пишет, что он-де создал промежуточную переменную формы - Form_xz, и пытается присваивать ей то Form1, то Form2. И это не работает. И я не мудрствуя глюкаво решил что Form как переменная не есть указатель, что меня ессно немножко удивило. Но справку мне читать, а тем более что-то проверять и тестировать было уже лень. Отсюда напрашивался вывод - пойнтеры спасут отца русской демократии.
homm (2007-11-06 10:35:00) [4]> [14] Петрович07 (05.11.07 21:11)
> я себе представляю логику так:
Ну, все верно. Что-то не работает?
Ega23 (2007-11-06 10:30:00) [5]
> Dib@zol © (05.11.07 22:01) [15]
Господи, ну не давай таких советов, тем более в "Начинающих".
Kolan (2007-11-05 23:40:00) [6]> [15] Dib@zol © (05.11.07 22:01)
Ни кому не показывай больше. Объект это и так указатель.
sniknik (2007-11-05 22:12:00) [7]> дык как мне по условию выбирать форму с которой работать
правильно не выбирать... правильно вообще с такими переменными не работать. т.е. вот это вот указание form1.xxx? form2.xxx уже бред.
если желаемое действие происходит внутри класса TForm то писать надо без указания переменной класса, тогда пишешь базовый класс (форму) на которой есть мемо и в нем обращаешся
for i:=0 to 10 do
memo1.lines.add(inttostr(i));
дальше, наследуешь от базовой 2 формы и получаешь то что нужно, т.е. в каждой метод заполнения будет работать со своим memo.
или если хочется вынести обработчик в отдельный модуль (типа модуль утилит)
то в процедуру обработки передаешь то с чем работаешь (в данном случае это не форма а lines),
procedure xxx(const lines: TStrings);
var i: integer;
begin
for i:=0 to 10 do
lines.add(inttostr(i));
end;
и при необходимости вызываешь ее в разных формах с разными параметрами.
procedure TForm1.yyyy()
begin
xxx( memo1.lines);
end;
и ни каких условий с выбором форм, ни там ни там...
vpbar (2007-11-05 22:03:00) [8]
> Dib@zol © (05.11.07 22:01) [15]
А смысл??
не проще так?
var
PM : TMemo;
...
if [условие] then PM:=Form1.Memo else PM:=Form2.Memo;
for i:=1 to 10 do
PM.Lines.Add(Inttostr(1));
Dib@zol (2007-11-05 22:01:00) [9]А может сделать так:
type
PMemo = ^Tmemo;
var
PM : PMemo;
...
if [условие] then PM:=addr(Form1.Memo) else PM:=addr(Form2.Memo);
for i:=1 to 10 do
PM^.Lines.Add(Inttostr(1));
Ъ?
Петрович07 (2007-11-05 21:11:00) [10]собственно весь этот код никчему,это в пример привел.
допустим есть две формы(form1 и form2)
на обоих формах есть memo1
и мне нужно циклом забить данные в мемо1
for i:=0 to 10 do
form_xz.memo1.lines.add(inttostr(i));
дык как мне по условию выбирать форму с которой работать
я себе представляю логику так:
True - form1, false - form2
if true then
form_xz := form1
else
form_xz := form2;
for i:=0 to 10 do
form_xz.memo1.lines.add(inttostr(i));
Dib@zol (2007-11-05 20:38:00) [11]ЗЫЖ: Заиняй уж, петрович, но в код не вникал, ибо страшно =D Объясни словами!
Dib@zol (2007-11-05 20:36:00) [12]А собсна в чём вопрос? Для чего это нужно? Только получив подробный развёрнутый ответ, коллективное сознание форума сможет выработать оптимальное решение :) И оно наверняка будет изящнее чем просто менять имена форм...
Петрович07 (2007-11-05 20:32:00) [13]собственно с первоначальной проблемой я так и не могу разобраться.
Anatoly Podgoretsky (2007-11-05 19:52:00) [14]> Петрович07 (05.11.2007 19:28:09) [9]
Может и проще, но я выбираю как правильно, что бы получить максимальную пользу от форума. И сюда повсему подействовало.
Петрович07 (2007-11-05 19:28:00) [15]> CheckBox1.Checked = true
ты наверно имел ввиду что надо if checkbox1.checked then
проще это было написать...
Anatoly Podgoretsky (2007-11-05 19:20:00) [16]Привет настоящий!
Выделеное тебе ничего не сказало?
Петрович07 (2007-11-05 19:18:00) [17]Настоящие мужики себе этого не позволяют.
Петрович07 (2007-11-05 19:17:00) [18]и если вам не трудно, то объясните что не так,или ссылку дайте где почитать или книгу в конце концев посоветуете, а сказать "ты лох нихрена не умеешь"(Anatoly Podgoretsky Ты геде программировать учился?) - это все могут. Все с чего то начинают,у меня вот допустим компьютер меньше года,до этого вообще с ними не работал,но я пытаюсь нагнать и понять...
А осмеевать глупо.
Петрович07 (2007-11-05 19:04:00) [19]Anatoly Podgoretsky, в интернете статьи читал, а вы?
vpbar (2007-11-05 17:54:00) [20]>>Anatoly Podgoretsky © (05.11.07 15:57) [3]
Видимо у Макконнелла, он приветствует такое. Хотя по остальному коду не скажешь что вообще учился гдето :)