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

Вниз

Динамически созданный Memo на PageControl   Найти похожие ветки 

 
Artem   (2008-02-11 01:13) [0]

Господа!

Как обратиться к динамически созданному Memo, который в свою очередь размещен на динамически созданном TabSheet? Например, сохранить Memo.lines.saveTOfile....?

Процесс создания компонент:
inc(pages);
TabSheet := TTabSheet.Create(Self);
TabSheet.Name:="p"+inttostr(pages);
TabSheet.PageControl := PageControl1;
Memo:=TMemo.Create(self);
Memo.Align:=alClient;
memo.Name:="m"+inttostr(pages);
memo.parent:=TabSheet;
memo.bevelinner:=bvNone;
memo.BevelKind:=bkFlat;
memo.BevelOuter:=bvLowered;
memo.BorderStyle:=bsNone;
memo.font.name:="Tahoma";
memo.font.Size:=10;
memo.ScrollBars:=ssBoth;
rs := TResourceStream.Create(hinstance, "ST1", RT_RCDATA);
  try
   memo.Lines.LoadFromStream(rs);
  finally
    rs.Free;
  end;


Как мне впоследствии обращаться? Например, мне нужно сохранить содержимое MEMO на текущей вкладке (PageControl1.ActivePage)???

Заранее огромное спасибо за помощь. Очень выручите.


 
Бывалый   (2008-02-11 01:36) [1]

Наверное сохранить куда-то значение memo и потом к нему обращаться?
Ну там, в переменную какую-нибудь.


 
Artem   (2008-02-11 01:43) [2]


> Наверное сохранить куда-то значение memo и потом к нему
> обращаться?


Нет. Значение memo изменяется пользователем во время работы программы после того, как memo было создано динамически. Т.е. пользователь ввел инфу, нажал на кнопку сохранить, а программа должна взять содержимое (причем содержимое memo на динамически созданной вкладке) и savetofile.

Не знаю как это сделать...


 
ketmar ©   (2008-02-11 01:53) [3]

>[2] Artem ()
>Не знаю как это сделать...

однако, ты объект memo запоминаешь? запоминаешь. в чём дальше проблема? опять критический баг в DNA?

---
Understanding is not required. Only obedience.


 
Artem   (2008-02-11 01:57) [4]


> однако, ты объект memo запоминаешь?


запоминаю, и что? как мне в коде к нему обращение-то прописать?

если, например, напишешь m2.lines.savetofile, то будет ругаться, что нет такого компонента!


 
Artem   (2008-02-11 02:06) [5]

Все, понял. Просто надо сделать массив array of TMemo и там уже работать


 
{RASkov} ©   (2008-02-11 02:16) [6]

> [5] Artem   (11.02.08 02:06)

В твоем случае не обязательно заводить дополнительный массив указателей на Memos,
так как нечто такое у тебя уже есть - например: Tag у TabSheet...)


 
Германн ©   (2008-02-11 02:59) [7]


> ketmar ©   (11.02.08 01:53) [3]
>
> >[2] Artem ()
> >Не знаю как это сделать...
> однако, ты объект memo запоминаешь? запоминаешь. в чём дальше
> проблема

Не. Не запоминает он его. Более того, он использует "внешнюю переменную" Memo при создании сего объекта.


 
ketmar ©   (2008-02-11 03:20) [8]

>[7] Германн © (2008-02-11 02:59:00)
как же не запоминает? вот в этой переменной и запоминает.

---
Understanding is not required. Only obedience.


 
Германн ©   (2008-02-11 03:31) [9]


> ketmar ©   (11.02.08 03:20) [8]
>
> >[7] Германн © (2008-02-11 02:59:00)
> как же не запоминает? вот в этой переменной и запоминает.
>
>
>

Не ну Дарк, это уже перебор!
Даже затрудняюсь.
А ты не забыл как "орудовать" метлой?


 
Artem   (2008-02-11 03:41) [10]

Народ, проблема решена, тема закрыта, не ссорьтесь :) Всем спасибо.


 
{RASkov} ©   (2008-02-11 13:09) [11]

> тема закрыта,

Вот как вариант решения данного сабжа:
 
 TabSheet:=TTabSheet.Create(PgCtrl);
 TabSheet.PageControl:=PgCtrl;
 ....
 Mm:=TMemo.Create(TabSheet);
....
 TabSheet.Tag:=Integer(Mm)

где TabSheet: TTabSheet; Mm: TMemo; PgCtrl: TPageControl на форме.....
Ну и доставать Memo нужно примерно так:
TMemo(PgCtrl.ActivePage.Tag).<методы или свойства Мемо>....


 
ketmar ©   (2008-02-11 15:49) [12]

>[9] Германн © (2008-02-11 03:31:00)
цитата из 0: Memo:=TMemo.Create(self);
Memo — это не переменная, по-твоему? O_o

---
Understanding is not required. Only obedience.


 
{RASkov} ©   (2008-02-11 16:18) [13]

> [12] ketmar ©   (11.02.08 15:49)

Германн имел ввиду, что одна переменная для мемо на всех вкладках пэйджконтрола - это не разумно :)
т.е. в ней(переменной Мемо) будет мемо созданное на последней вкладке... а остальные утекли...)


 
ANB   (2008-02-11 16:21) [14]

Ну примерно, тупорыленько так (и с ричэдитом) :

procedure TfmImpUFEBSMain.acPrintRptExecute(Sender: TObject);
var
 i, n : Integer;
 tsRpt : TTabSheet;
 reRptObj :  TControl;
 reRpt : TRichEdit;
 RptName : String;
begin
 if pcReports.PageCount = 0 then begin
   ShowDialog(
     "Ошибка"
   , "Нет отчетов для печати"
   , sdiStop, []);
   Exit;
 end;
 tsRpt := pcReports.ActivePage;
 RptName := tsRpt.Caption;
 reRpt := nil;
 n := tsRpt.ControlCount - 1;
 for i := 0 to n do begin
   reRptObj := tsRpt.Controls[i];
   if reRptObj is TRichEdit then begin
     reRpt := TRichEdit(reRptObj);
   end;
 end;
 if reRpt <> nil then begin
   if (ShowDialog(
         "Подвердите"
       , "Отправить на печать отчет "" + RptName + "" ?"
       , sdiConfirm, ["&Да", "&Нет"]) = 1)
   then begin
     Print_TRichEdit(RptName, reRpt, reRpt.Tag);
     ShowDialog(
         "Печать"
       , "Отчет "" + RptName + "" отправлен на печать"
       , sdiInform, []);
   end;
 end else begin
   ShowDialog(
     "Ошибка"
   , "Для отчета "" + RptName + "" не найден объект TRichEdit. Сообщите разработчику"
   , sdiStop, []);
 end;
end;

!!! Если на вкладке может быть несколько редакторов, то объектам придется присваивать при создании имена.


 
{RASkov} ©   (2008-02-11 16:21) [15]

> [12] ketmar ©   (11.02.08 15:49)

глюк kpmc ? :) ...с тэгами.


 
clickmaker ©   (2008-02-11 16:23) [16]


> memo.parent:=TabSheet;

ежели так, то мемо живет среди TabSheet.Controls


 
ANB   (2008-02-11 16:41) [17]


> Не. Не запоминает он его. Более того, он использует "внешнюю
> переменную" Memo при создании сего объекта

Запоминает в списке парентов странички. Иначе не смог бы отобразить.



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1200650677
capkoh
2008-01-18 13:04
2008.03.09
Оценка качества кода


2-1202875687
Shousheng
2008-02-13 07:08
2008.03.09
memo добавление текста


15-1202053496
Snek
2008-02-03 18:44
2008.03.09
Гибкая автаризация в программе.


3-1192783481
alsov
2007-10-19 12:44
2008.03.09
Поиск по blob полю


15-1201865991
DmitriyG.
2008-02-01 14:39
2008.03.09
Кривой Help для Delphi 2007