Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 08:36   #1
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию Работа с несозданным Memo

Уважаемые специалисты.
Есть такая проблемка: по Timer1 создаются TTabsheet в которых создаются по одному TMemo. При нажатии Button1 значение Edit1 должно добавиться в Memo.
Может ли кто нибудь подсказать каким образом можно это осуществить?
Заранее спасибо за помщь.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 08.04.2011, 08:40   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Молоток Посмотреть сообщение
Уважаемые специалисты.
Есть такая проблемка: по Timer1 создаются TTabsheet в которых создаются по одному TMemo. При нажатии Button1 значение Edit1 должно добавиться в Memo.
Может ли кто нибудь подсказать каким образом можно это осуществить?
Заранее спасибо за помщь.
а мемы как у вас создаются? и как хранятся?
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 08.04.2011, 08:50   #3
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

Код:
begin//1
 with Q5 do
  begin//2
   Q5.Close;
   Q5.SQL.Clear;
   Q5.SQL.Add('Select Otp, Chat_Text from Chat');
   Q5.SQL.Add('where Prin='+#39+Label3.Caption+#39+'and status=1');
   Q5.Active:=true;
   Q5.Open;

   while not Q5.eof do
    begin//3
     etalon:=Q5.FieldByName('Otp').AsString;
     TabSheet:=TTabSheet.Create(GroupBox3);
     TabSheet.Caption:=etalon;
     TabSheet.PageControl := PageControl1;
     Memo:=TMemo.Create(PageControl1);
     Memo.Parent:=TabSheet;
     Memo.Lines.Add(Q5.FieldByName('Chat_Text').AsString);
     Memo.Color:=$00FFF2F2;
     Memo.Height:=198;
     Memo.Width:=760;
     Q5.Next
    end;//3
  end;//2
end;//1


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.

Последний раз редактировалось Serge_Bliznykov; 08.04.2011 в 09:59.
Молоток вне форума Ответить с цитированием
Старый 08.04.2011, 09:17   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

1) создайте массив TMemo как здесь например создаётся массив TEdit (все точно также, только тип другой);
2) либо ищите компонент типа TMemo, проверяете его родителя, и если родитель сейчас активен, то добавляете в это Memo текст (http://www.programmersforum.ru/showthread.php?p=771741)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 08.04.2011, 09:49   #5
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

сделал вот так: TMemo(form1.PageControl1.ActivePage .FindComponent('Memo1')).Lines.Add( Edit6.Text), но выдает ошибку
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 08.04.2011, 09:54   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Молоток Посмотреть сообщение
сделал вот так: TMemo(form1.PageControl1.ActivePage .FindComponent('Memo1')).Lines.Add(Edit6.Text), но выдает ошибку
Memo1 - это имя компонента, при создании вы не присваиваете имя созданным Memo, поэтому и возникает ошибка
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 08.04.2011, 09:59   #7
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
TMemo(form1.PageControl1.ActivePage .FindComponent('Memo')).Lines.Add(E dit6.Text);
end;
так тоже ошибку выдает...
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Старый 08.04.2011, 10:01   #8
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Молоток Посмотреть сообщение
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
TMemo(form1.PageControl1.ActivePage .FindComponent('Memo')).Lines.Add(E dit6.Text);
end;
так тоже ошибку выдает...
Код:
   while not Q5.eof do
    begin//3
     etalon:=Q5.FieldByName('Otp').AsString;
     TabSheet:=TTabSheet.Create(GroupBox3);
     TabSheet.Caption:=etalon;
     TabSheet.PageControl := PageControl1;
     Memo:=TMemo.Create(PageControl1);
     Memo.Parent:=TabSheet;
     Memo.Lines.Add(Q5.FieldByName('Chat_Text').AsString);
     Memo.Color:=$00FFF2F2;
     Memo.Height:=198;
     Memo.Width:=760;
     Memo.Name := 'Memo1';
     Q5.Next
    end;//3
потом юзаете Memo1
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 08.04.2011, 10:54   #9
Молоток
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 37
По умолчанию

Спасибо Вам большое. Сильно выручили. Сделал вот так:

Control:= PageControl1.ActivePage.FindChildCo ntrol('memo');
if control<>nil then
TMemo(control).Lines.Add(Edit6.Text +' ('+DateToStr(Now)+' '+TimeToStr(Now)+')');

и все получилось.
Закон программиста: Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Молоток вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Memo Chaser Общие вопросы C/C++ 0 26.03.2010 22:03
Работа с memo mish@ Общие вопросы Delphi 2 20.11.2009 21:58
работа с MEMO Dimarik Общие вопросы C/C++ 23 13.07.2009 19:52
Работа с Memo RockForr Компоненты Delphi 2 28.04.2009 19:56
Работа с Memo Волк Общие вопросы Delphi 3 13.02.2009 17:47