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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.038 c
11-1113410359
hotes
2005-04-13 20:39
2005.12.11
Динамическое меню


2-1132425150
CMOS
2005-11-19 21:32
2005.12.11
Не получается правильно удалить объект


4-1128801147
Orange
2005-10-08 23:52
2005.12.11
функция CreateFile завершается неудачей.


1-1130999962
kblc
2005-11-03 09:39
2005.12.11
Есть ли у класса интерфейс?


14-1132673206
ArtemESC
2005-11-22 18:26
2005.12.11
Готовность устройства...





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