Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Объектное ориентирование   Найти похожие ветки 

 
kop   (2005-11-23 13:11) [0]

Создаю в отдельном юните функцию заполнения Edit. Затем хочу вызвать ее на двух различных формах - прога вылетает!!! Неужели мне надо создавать две одинаковые функции для заполнения Edit"ов разных форм??


 
clickmaker ©   (2005-11-23 13:14) [1]


> Неужели мне надо создавать две одинаковые функции для заполнения
> Edit"ов разных форм??

ну канешна. А кому щас лехко?


 
Tonich ©   (2005-11-23 13:20) [2]

так блин передавай в функцию как парамерт тот эдит который ты хочешь заполнить  

???????


 
Думкин ©   (2005-11-23 13:25) [3]

17 строка.


 
kop   (2005-11-23 13:26) [4]


> так блин передавай в функцию как парамерт тот эдит который
> ты хочешь заполнить  

а если мне надо этой функцией заполнять на двух разных формах 7(!!)эдитов и 7 checkbox"ов?? получается будет 14 переменных?


 
clickmaker ©   (2005-11-23 13:28) [5]


> на двух разных формах 7(!!)эдитов и 7 checkbox"ов?? получается
> будет 14 переменных?

не-а. 28, раз 2 формы


 
Tonich ©   (2005-11-23 13:29) [6]

ну хорошо , передавай тогда как параметр указатель на форму, а потом просто пробегайся по компонентам этой формы, проверяя в это в ремя что за компонент, если это эдит значить заполнять так.. если это бокс значить иначе...

и для начала бы, ты сказал точно что тебе надо, а то в каждом посте всплывают какие то новости


 
Digitman ©   (2005-11-23 13:30) [7]


> Создаю в отдельном юните функцию заполнения Edit.


вот и давай приводи сюда эту самую ф-цию !!!


 
Ega23 ©   (2005-11-23 13:52) [8]


procedure SetEditText(aEdit:TEdit);
begin
aEdit.Text:="sjdgfknsrkg[pcvmk[bok";
end;

procedure TForm1.Button1Click(Sender : TObject)
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
 if (Components[i] is TEdit) then SetEditText(TEdit(Components[i]));
end;


?


 
kop   (2005-11-23 14:00) [9]


> и для начала бы, ты сказал точно что тебе надо, а то в каждом
> посте всплывают какие то новости

Я разрабатываю Электронный экзаменатор на основе XML-документа. Там вообщем много чего есть, долго описывать...То про что я говорю: есть форма с эдитами и чекбоксами, на нее накладываются вопросы и ответы из XML. При их изменении вызываю функцию Wite. Когда мне надо создать новый вопрос (т.е. вопрос и ответы), я открываю другую форму с тем же количеством эдитов и боксов, заполняю необходимое их количество и выхожу, причем функция опять же Write по логике должна записывать содержимое нового вопроса в XML. Вот про что я


 
Tonich ©   (2005-11-23 14:06) [10]

ну вот то о чем я говорил тебе впринципе написали в [8]

осталось только оформить это в отдельную процедуру и все ))
да и если я тебе правильно понял то в каждый эдит идет свой текст ? тохда для определения какой именно эдит сейчас будит заполняться , можно использовать его имя или свойство Tag вот


 
Думкин ©   (2005-11-23 14:08) [11]

> kop   (23.11.05 14:00) [9]

Ты говоришь, что вылетает. Заставить прогу вылетать - не так просто. Поведай все-таки, как ты дошел до жизни такой.
А если будешь продолжать наставать на телепатировании - то ...сам подумай.


 
Digitman ©   (2005-11-23 14:10) [12]


> kop   (23.11.05 14:00) [9]


и долго ты еще из пустого в порожнее переливать будешь ?

от тебя требуется КОД !

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


 
kop   (2005-11-23 14:14) [13]

>>Digitman: Функция нереально здоровая) и не думаю что от этого будет какой-либо толк, но вот она:
function TMyClass.WriteNewQuestion: string;
begin
 loadt:=GetTest(Form4.XMLDocument1);
 qlist:=loadt.Get_Question;
 q1:=qlist.Add;
 q1.Set_QText(Form3.Edit1.Text);

 alist:=q1.Answer;

 if Form3.Edit2.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit2.Text);
   if Form3.checkbox1.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit3.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit3.Text);
   if Form3.checkbox2.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit4.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit4.Text);
   if Form3.checkbox3.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit5.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit5.Text);
   if Form3.checkbox4.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit6.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit6.Text);
   if Form3.checkbox5.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit7.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit7.Text);
   if Form3.checkbox6.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Form3.Edit8.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Form3.Edit8.Text);
   if Form3.checkbox7.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;

end;


 
Digitman ©   (2005-11-23 14:16) [14]

так..

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


 
Думкин ©   (2005-11-23 14:18) [15]

Про типы - догадайся мол сама.
А при чем тут вторая форма и вылет?
Я второй формы в упор не вижу. Хотя и догадался, что Form3 - это первая.
Хотя есть Form4 - но ... не то.

По-поводу вылета. Где и как вылетает? И где ты пытаешься заполнить вторую форму?


 
Digitman ©   (2005-11-23 14:20) [16]


> Думкин ©   (23.11.05 14:18) [15]


тебе оно надо ? "телепатировать" ?)


 
kop   (2005-11-23 14:28) [17]

Будем считать что форм3-это вторая форма для добавления нового вопроса... и вот если убрать "form3" у всех вышепоказанных компонентов,то delphi не поймет, к какой именно форме обращаться - форм3 или форм4 (на которой я тоже вызываю эту функцию) и вылетает


 
Плохиш ©   (2005-11-23 14:30) [18]


> kop   (23.11.05 14:28) [17]

Может почитаешь, что про ооп в делфи?


 
Digitman ©   (2005-11-23 14:31) [19]


> kop   (23.11.05 14:28) [17]


ты еще долго будешь из пустого в порожнее лить ?

КАКАЯ КОНКРЕТНО строчка твоего  кода вызывает то что ты называешь неким "вылетанием проги" ?!


 
Думкин ©   (2005-11-23 14:33) [20]

> kop   (23.11.05 14:28) [17]

Ну, если они почти дублируют друг друга. То передавай в функцию форму как параметр.
function TMyClass.WriteNewQuestion(Form : TForm): string;

и замени TForm3 на Form. Например. Хотя топкой пахнет. :(

А почему вылетает то? Видимо пишет чего-то перед этим?

> Digitman ©   (23.11.05 14:20) [16]

Иногда забавно ребусы смотреть. Или попытаться убедить автора - что ему надо не спешить, а подумать. Не всегда получается. :(
Да и вдруг я телепатор. :))


 
alex_*** ©   (2005-11-23 14:35) [21]

где описание типа Q1


 
Думкин ©   (2005-11-23 14:37) [22]

Пытка апельсинами продолжалась второй час.(с) Спортлото-82. :(


 
Digitman ©   (2005-11-23 14:39) [23]


> Думкин ©   (23.11.05 14:33) [20]


> вдруг я телепатор


ну разве что так)...

но, однако, привести автора к мысли использовать на полную мощь встроенный отладчик, imho, будет гораздо полезней нежели обрести вдруг телепатические потенциалы)


 
Думкин ©   (2005-11-23 14:42) [24]

> Digitman ©   (23.11.05 14:39) [23]

Так к тому и ведем ведь. :)


 
Digitman ©   (2005-11-23 14:43) [25]


> Думкин ©   (23.11.05 14:42) [24]


солидарен на все сто) ..


 
Плохиш ©   (2005-11-23 15:12) [26]


> Digitman ©   (23.11.05 14:39) [23]

Есть подозрение, что у автора процесс компиляции до конца не доходит ;-)


 
kop   (2005-11-23 16:22) [27]

Вы предлагаете вот так функцию прописать?
function TMyClass.WriteNewQuestion(Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,Edit8: TEdit;    CheckBox1,CheckBox2,CheckBox3,CheckBox4,CheckBox5,CheckBox6,CheckBox7: TCheckBox): string;
begin
 loadt:=GetTest(Form4.XMLDocument1);
 qlist:=loadt.Get_Question;
 q1:=qlist.Add;
 q1.Set_QText(Edit1.Text);

 alist:=q1.Answer;

 if Edit2.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit2.Text);
   if checkbox1.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit3.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit3.Text);
   if checkbox2.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit4.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit4.Text);
   if checkbox3.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit5.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit5.Text);
   if checkbox4.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit6.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit6.Text);
   if checkbox5.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit7.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit7.Text);
   if checkbox6.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;
 if Edit8.Text <> "" then begin
   a:=alist.Add;
   a.Set_AContent(Edit8.Text);
   if checkbox7.Checked=true then a.Set_Right("true") else a.Set_Right("false");
 end;

end;


 
Digitman ©   (2005-11-23 16:29) [28]


> kop   (23.11.05 16:22) [27]


не взирая на твое "прога вылетает" на основании [27] можно сказать одно - таким "прогам" место в топке.


 
kop   (2005-11-23 16:45) [29]

>Digitman ©   (23.11.05 16:29) [28]
ты не прав! моя программа реально запускается в одной из местных школ... мне еще и бабла отвалят :)


 
Digitman ©   (2005-11-23 16:49) [30]


> моя программа реально запускается


не спорю.


> прога вылетает


факт, кстати, не мной, а тобой констатируемый)


> бабла отвалят


за ту саму дерьмовую неотесаную-неотлаженую прогу-то !?)
ту которая "реально запускается", а потом "вылетает" !?)

ищи дурака)))) ...LOL


 
Ega23 ©   (2005-11-23 17:00) [31]


> kop   (23.11.05 16:22) [27]


КАКОЙ УЖАС!!!!

Ты эта... про бабло не зарекайся... Я бы за ТАКУЮ программу не просто не заплатил, я бы убил нахрен.


 
alex_*** ©   (2005-11-23 18:49) [32]

function TMyClass.WriteNewQuestion(Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,Edit8: TEdit;    CheckBox1,CheckBox2,CheckBox3,CheckBox4,CheckBox5,CheckBox6,CheckBox7: TCheckBox): string;

Ты сделай уж тогда массив записей типа ( ch: TCheckBox; ed: TEdit ), заполни его один раз при старте и пользуй. Я думаю что формы у тебя все равно AutoCreate. Бегаешь по нему и смотришь что надо



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

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.036 c
2-1132307783
oleggar
2005-11-18 12:56
2005.12.11
ICQ


2-1132404304
начиннающий
2005-11-19 15:45
2005.12.11
Filter


1-1132010992
Dark Lord
2005-11-15 02:29
2005.12.11
Форма в dll


14-1132245660
User1
2005-11-17 19:41
2005.12.11
Ура!!!


1-1131797065
zxc
2005-11-12 15:04
2005.12.11
одновременно avi показывать и рисовать