|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вывести edit тексты в memo
Стоит задача:
В форме допустим 25 едитов. Пользователь их заполняет и нажимает на кнопку. Далее в мемо должен быть выведен текст каждого едита. В таком формате: edit1.text+','edit2.text+','. И т.п. на выходе должно получится: 123,124 и т.д. Ну, очень запарно писать всё это руками, проще организовать через массив. Вот я накатал такой массив: Код:
for i:=1 to 50 do s:= edit[i].text; form1.script.Lines.Insert(0,s); |
#2
|
||||
|
||||
На последнем едите сделайте обработку события onExit там пропишите примерно такое:
Код:
Memo1.Text := ''; for i := 0 to Form1.ComponentCount - 1 do if Form1.Componets[i].ClassType = TEdit then if Memo1.Text <> '' then Memo1.Text := Memo1.Text+','+TEdit(Form1.Componets[i]).Text else Memo1.Text := TEdit(Form1.Componets[i]).Text; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Ну код, что вы дали, багнутый, или у меня руки кривые.
В общем попытался поставить, во-первых ничего не работает, т.е. ничего не добавляется, во-вторых, когда вписываешь, что-нибудь в последний едит, то пишет еррор. Дальше попробовал не Онексит поставить, а просто при нажатии на кнопку, сразу стало выдавать ошибку. Вот код, подобрал под свою прогу: Код:
for i := 0 to Form9.ComponentCount - 1 do if Form9.Components[i].ClassType = TEdit then if form1.Script.Text <> '' then form1.Script.Text := form1.script.Text+','+TEdit(Form1.Components[i]).Text else form1.Script.Text := TEdit(Form1.Components[i]).Text; |
#4
|
||||
|
||||
Ну писал тут без проверки, опечатался в одной буковке. Проверил на реальной проге - все нормально. Вот подправленный вариант:
Код:
Memo1.Text := ''; for i := 0 to Form1.ComponentCount - 1 do if Form1.Components[i].ClassType = TEdit then if Memo1.Text <> '' then Memo1.Text := Memo1.Text+','+TEdit(Form1.Components[i]).Text else Memo1.Text := TEdit(Form1.Components[i]).Text; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
В общем я то же проверил, опечатку я уже сразу заметил, у меня там с формами было напутано. Ну что у меня выводит: Когда запалняешь 1 или несколько едитов, то он правильно их пишет, но, он оставляет кучу запятых, и если например заполнил побольше едитов, он вставляет между этими запятыми цифры, вот код:
Код:
for i := 0 to Form9.ComponentCount - 1 do if Form9.Components[i].ClassType = TEdit then if form1.Script.Text <> '' then form1.Script.Text := form1.script.Text+','+TEdit(Form9.Components[i]).Text else form1.Script.Text := TEdit(Form9.Components[i]).Text; ,,,4 shop , //Ну это моя часть, так что не обращай внимание. ,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,, Последний раз редактировалось Мяфк, 21.08.2010 в 01:52. |
#6
|
||||
|
||||
Я так понял, что те едиты в которых нет данных должны пропускаться. Тогда будет так:
Код:
Var i: Integer; begin Memo1.Text := ''; for i := 0 to Form1.ComponentCount - 1 do if Form1.Components[i].ClassType = TEdit then if Memo1.Text <> '' then begin if TEdit(Form1.Components[i]).Text <> '' then Memo1.Text := Memo1.Text+','+TEdit(Form1.Components[i]).Text end else Memo1.Text := TEdit(Form1.Components[i]).Text; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
Спасибо, большое, всё работает, вот только один маленький баг, когда нажимаю на кнопку, в мемо становится две строки:
,,,4 shop ,1,2 Мне бы надо, что бы всё в одну строку шло, но одно но, когда второй раз нажимаю на кнопку, добавляется в одну строку.. Вот полный код: Код:
form1.script.lines.add (form7.map.text+','+form7.x.text+','+form7.y.text+',4'+#9+'shop'+#9+form7.npc.text+#9+form7.sprite.text); for i := 0 to Form9.ComponentCount - 1 do if Form9.Components[i].ClassType = TEdit then if form1.Script.Text <> '' then begin if TEdit(Form9.Components[i]).Text <> '' then form1.Script.Text := form1.script.Text+','+TEdit(Form9.Components[i]).Text end else form1.Script.Text := TEdit(Form9.Components[i]).Text; end; |
#8
|
|||
|
|||
Ох, замучаю я вас сегодня, только что вспомнил, что я дурак и упустил, одну важную деталь.
В общем едитов у меня 2 типа, первые называются sid (sid1,sid2 и т.п.) и также sprice (sprice1,sprise2) Дак вот, мне надо такой код в массив кинуть: sid1.text+':'+sprice1.text+','+sid2.text+':'+spric e2.text и т.д. Я думал, узнаю как работать хотя бы с етими едитами с вашей помощью, но думаю через компонент это организовать не возможно, так как варианты разные или : или ,. Конечно есть идея, например в массиве делать проверку если i/2 без остатка, то ставим : после компонент[i], а если с остатком, то ставим , прокатит такое? |
#9
|
||||
|
||||
Затрудняюсь сказать почему у вас так происходит, может у вас для мемо включено свойство WordWrap.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
Да, было включено, выключил, но ничего не изменилось..
Мне бы важнее услышать ответ на предыдущие моё сообщение. |
#11
|
|||
|
|||
1. Делай через буфеную переменную.
2. FindComponent спасет отца русской демократии Что-то типа того: Код:
var i : Integer; s : String; e1, e2 : TEdit; begin S := ''; For i := 1 to 5 Do // Пусть у нас 5 пар едитов Begin e1 := FindComponent('sid' + IntToStr(I)) As TEdit; e2 := FindComponent('spice' + IntToStr(I)) As TEdit; If (e1 <> nil) and (e2 <> Nil) Then S := e1.Text + ':' + e2.Text + ';'; End; Memo1.Text := S; end; |
#12
|
|||
|
|||
Спасибо, но я не могу угадать сколько едитов заполнит пользователь, ставил for i := 1 to Form9.ComponentCount - 1, не прокатило, пустые едиты заполнял :;, ставил просто 50, думал ваша проверка на нил поможет, так же не прошло...
|
#13
|
|||
|
|||
Угу, потому что в программе ошибка:
Код:
If (e1 <> nil) and (e2 <> Nil) Then S := S + e1.Text + ':' + e2.Text + ';'; |
#14
|
|||
|
|||
Снова не получилось. Поставил массив от 1 до 50 и заполнил 1 пару едитов.
Получилось вот что: 1:1,1:1,:,1:1,:,:,1:1,:,:,:,1:1,:,:,:,:,1:1,:,:,:, :,:,1:1,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,1:1,:,:,:,:, :,:,:,:,1:1,:,:,:,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,:, :,:,1:1,:,:,:,:,:,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,:, :,:,:,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,1:1,:,:,:,:, :,:,:,:,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:, :,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,1:1,:,:,:, :,:,:,:,:,:,:,:,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,:,:, :,:,:,:,:,:,:,:,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,:, :,:,:,:,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:, :,:,1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:, 1:1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,1: 1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,1: 1,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:, Точку с запятой на запятую, я заменил. Попробовал например S в массиве обнулять каждый раз, получилось как раньше, т.е. заполняются две первые :, а потом пустые :, Последний раз редактировалось Мяфк, 21.08.2010 в 12:00. |
#15
|
||||
|
||||
Код:
If (e1 <> nil) and (e2 <> Nil) Then S := S + e1.Text + ':' + e2.Text + ';'; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |