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

Вниз

вопрос по циклу,условию   Найти похожие ветки 

 
Петрович07   (2007-11-05 14:04) [0]

всем привет,у меня вопрос:
на 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;


 
ProgRAMmer Dimonych ©   (2007-11-05 14:09) [1]

Поменяй имена компонентов, иначе программу никогда не закончишь писать.

По поводу собственно решения проблемы - не уверен, что это правильно, но...

Я бы объявил локально экземпляр TForm, а потом

if <Условие> then MyLocalForm:=Form6 else MyLocalForm:=Form10;
for i:=1 to MyLocalorm.StringGrid15846541.RowCount-1 do


Если бы чего-нибудь не пошло, ловил бы ошибку :)

А вообще - что-то с логикой программы не то, надо чего-то глобально менять.


 
Петрович07   (2007-11-05 14:36) [2]

хм..
 Form_gg:TForm;

if CheckBox1.Checked = true then
Form_gg := Form1
else
Form_gg := form2;

чет не то)))
Form_gg.edit1.text := "fsdf";

спасибо за ответ


 
Anatoly Podgoretsky ©   (2007-11-05 15:57) [3]


> CheckBox1.Checked = true

Ты геде программировать учился?


 
vpbar ©   (2007-11-05 17:54) [4]

>>Anatoly Podgoretsky ©   (05.11.07 15:57) [3]
Видимо у Макконнелла, он приветствует такое. Хотя по остальному коду не скажешь что вообще учился гдето :)


 
Петрович07   (2007-11-05 19:04) [5]

Anatoly Podgoretsky, в интернете статьи читал, а вы?


 
Петрович07   (2007-11-05 19:17) [6]

и если вам не трудно, то объясните что не так,или ссылку дайте где почитать или книгу в конце концев посоветуете, а сказать "ты лох нихрена не умеешь"(Anatoly Podgoretsky Ты геде программировать учился?) - это все могут. Все с чего то начинают,у меня вот допустим компьютер меньше года,до этого вообще с ними не работал,но я пытаюсь нагнать и понять...
А осмеевать глупо.


 
Петрович07   (2007-11-05 19:18) [7]

Настоящие мужики себе этого не позволяют.


 
Anatoly Podgoretsky ©   (2007-11-05 19:20) [8]

Привет настоящий!
Выделеное тебе ничего не сказало?


 
Петрович07   (2007-11-05 19:28) [9]

> CheckBox1.Checked = true
ты наверно имел ввиду что надо if checkbox1.checked then
проще это было написать...


 
Anatoly Podgoretsky ©   (2007-11-05 19:52) [10]

> Петрович07  (05.11.2007 19:28:09)  [9]

Может и проще, но я выбираю как правильно, что бы получить максимальную пользу от форума. И сюда повсему подействовало.


 
Петрович07   (2007-11-05 20:32) [11]

собственно с первоначальной проблемой я так и не могу разобраться.


 
Dib@zol ©   (2007-11-05 20:36) [12]

А собсна в чём вопрос? Для чего это нужно? Только получив подробный развёрнутый ответ, коллективное сознание форума сможет выработать оптимальное решение :) И оно наверняка будет изящнее чем просто менять имена форм...


 
Dib@zol ©   (2007-11-05 20:38) [13]

ЗЫЖ: Заиняй уж, петрович, но в код не вникал, ибо страшно =D Объясни словами!


 
Петрович07   (2007-11-05 21:11) [14]

собственно весь этот код никчему,это в пример привел.

допустим есть две формы(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 22:01) [15]

А может сделать так:

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));

Ъ?


 
vpbar ©   (2007-11-05 22:03) [16]


> 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));


 
sniknik ©   (2007-11-05 22:12) [17]

> дык как мне по условию выбирать форму с которой работать
правильно не выбирать... правильно вообще с такими переменными не работать. т.е. вот это вот указание 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;

и ни каких условий с выбором форм, ни там ни там...


 
Kolan ©   (2007-11-05 23:40) [18]

> [15] Dib@zol ©   (05.11.07 22:01)

Ни кому не показывай больше. Объект это и так указатель.


 
Ega23 ©   (2007-11-06 10:30) [19]


> Dib@zol ©   (05.11.07 22:01) [15]


Господи, ну не давай таких советов, тем более в "Начинающих".


 
homm ©   (2007-11-06 10:35) [20]

> [14] Петрович07   (05.11.07 21:11)
> я себе представляю логику так:

Ну, все верно. Что-то не работает?


 
Dib@zol ©   (2007-11-06 16:00) [21]

> Господи, ну не давай таких советов, тем более в "Начинающих".

Ух ты, меня уже до Господа повысили :) Продвигаюсь ;D

А привести пример с пойнтерами я решил из-за [14]. Там Петрович пишет, что он-де создал промежуточную переменную формы - Form_xz, и пытается присваивать ей то Form1, то Form2. И это не работает. И я не мудрствуя глюкаво решил что Form как переменная не есть указатель, что меня ессно немножко удивило. Но справку мне читать, а тем более что-то проверять и тестировать было уже лень. Отсюда напрашивался вывод - пойнтеры спасут отца русской демократии.


 
homm ©   (2007-11-06 16:02) [22]

> [21] Dib@zol ©   (06.11.07 16:00)
> И я не мудрствуя глюкаво решил что Form как переменная не
> есть указатель

вот тут ты и промахнулся…


 
Ega23 ©   (2007-11-06 16:04) [23]


> Но справку мне читать, а тем более что-то проверять и тестировать
> было уже лень.


Хочешь совет? Всегда читай справку и проверяй, прежде чем ответ давать.
Я так, в своё время, 80% своих ответов так и не давал.
Парень ты умный, но здесь скорость ответа не важна. А важен правильный ответ.



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

Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.047 c
15-1193855856
Silver...
2007-10-31 21:37
2007.12.02
Сканер Штрих кода


11-1173462386
Dy1
2007-03-09 20:46
2007.12.02
как сделать прозрачный pbitmap? Маска и DrawTransparent работают


15-1193743088
KilkennyCat
2007-10-30 14:18
2007.12.02
Требуется помощь опытного спеца по FreeBSD и подобным.


2-1194357802
pasha_golub
2007-11-06 17:03
2007.12.02
Ошибка при вызове SHFileOperation после ForceDirectories


15-1193533419
ВАК
2007-10-28 04:03
2007.12.02
тз





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский