Текущий архив: 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.53 MB
Время: 0.052 c