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

Вниз

Создание динамических обьектов и работа с ними, определить имена   Найти похожие ветки 

 
jcrush ©   (2005-05-23 08:10) [0]

Создавать динамические обьекты я умею, а вот работать с ними нет, у меня создаются TabControl с Caption которые я беру из списка по клику, мне нужно создать в TabCheet memo, примеры тоже по этому есть...

Но как мне потом определить чтобы ну допустим добавить текст в нужное мне memo и как создать memo с нужным именем?

конкртеный пример при клике по Caption нужно создать richedit и добавить текст именно в тот richedit который имеет имя заголовка TabControl
спасибо!


 
Cobalt ©   (2005-05-23 08:27) [1]

Это уже зависит от всей задачи, а не от того кусочека, что ты привел.
Это фишка проектирования.
Так что приводи ВСЮ задачу.


 
jcrush ©   (2005-05-23 09:29) [2]

Хорошо посмотри на картинку программы:

http://stfw.ru/forums.php?m=posts&q=604

Сейчас Richedit не денамический, задача загружать добавлять и красить строки, пока все это реализованно через один richedit, в который добавляются и грузяться строки, при нажатии Caption загружается из файла последняя строка в Richedit, типа эмитации того что Richedit динамический..


 
Cobalt ©   (2005-05-23 10:59) [3]

Для начала тебе надо провести анализ твоей программы - какие в ней есть сущности.
Все контролы - отвечают за что-то.
Ветки общения с людьми.
Один (несколько) текущих подготовленных к отправке сообщений каждому из людей.

Всё это тебе предстоит проанализировать и составить чёткую картину взамиодействия, создать структуры (классы), которые будут отвечать за конкретный функционал, связывать компоненты.

Итогда этот вопрос разрешится автоматически.


 
jcrush ©   (2005-05-23 12:06) [4]

Привет Cobalt, как я могу создать классы кода я их никогда не создавал, что это такое?

Можно увидеть конкретный пример, самый простой допустим
созадть два memo и одну кнопку, при нажатии которой добавить текст "1"в один мемо и "2" в другой, но независимо от  того в каком порядке создан memo, т.е. покажите как определить куда добавить текст в зависимости Кому сообщение?


 
Ega23 ©   (2005-05-23 12:19) [5]

Можно увидеть конкретный пример, самый простой допустим
созадть два memo и одну кнопку, при нажатии которой добавить текст "1"в один мемо и "2" в другой, но независимо от  того в каком порядке создан memo, т.е. покажите как определить куда добавить текст в зависимости Кому сообщение?



unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   procedure RxDBLookupCombo1DropDown(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure ButtonClick(Sender:TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.RxDBLookupCombo1DropDown(Sender: TObject);
begin
Beep;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
With TMemo.Create(Self) do
 begin
  Parent:=Self;
  SetBounds(10,10,100,100);
  Name:="MEMO1";
  Text:="";
 end;

With TMemo.Create(Self) do
 begin
  Parent:=Self;
  SetBounds(130,10,100,100);
  Name:="MEMO2";
  Text:="";
 end;

With TButton.Create(Self) do
 begin
  Parent:=Self;
  Left:=200;
  Top:=200;
  OnClick:=ButtonClick;
  Caption:="Click Here"
 end;

end;

procedure TForm1.ButtonClick(Sender: TObject);
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
 begin
  if not (Components[i] is TMemo) then Continue;
  if TMemo(Components[i]).Name="MEMO1" then TMemo(Components[i]).Text:="1";
  if TMemo(Components[i]).Name="MEMO2" then TMemo(Components[i]).Text:="2";
 end;
end;

end.


 
Ega23 ©   (2005-05-23 12:20) [6]

На procedure RxDBLookupCombo1DropDown(Sender: TObject);
внимания не обращать. Атавизьм остался...  :о)


 
jcrush ©   (2005-05-23 12:32) [7]

вот на это ругаться не будет да?
for i:=0 to ComponentCount-1 do

Завтра попробую... очень интересно похоже именно то что  мне нужно, большое спасибо :)


 
Ega23 ©   (2005-05-23 12:35) [8]

похоже именно то что  мне нужно

Далеко не факт. Это одна из возможных реализаций (не самая лучшая, кстати) твоей "мини-задачи" (созадть два memo и одну кнопку, при нажатии которой добавить ....).
В общем и целом - Cobalt правильно написал.


 
msguns ©   (2005-05-23 15:05) [9]

>jcrush ©   (23.05.05 12:32) [7]
>вот на это ругаться не будет да?
>for i:=0 to ComponentCount-1 do

Для визуалок лучше ControlCount


 
Ega23 ©   (2005-05-23 15:18) [10]

Для визуалок лучше ControlCount

Только не забывать где какой Parent


 
Cobalt ©   (2005-05-23 15:42) [11]

2 jcrush ©   (23.05.05 12:32)
Насколько я понял - ты единственный разработчик.
К сожалениюю, в дистрибутив не входят исходники, чтобы дать тебе лучший совет :(
Посему всё бремя анализа структуры и функционала возлагается на тебя.

Но на первый взгляд -
1) функционал, отвечающий за взаимодействие с сервером (чисто невизуальная часть)
2) функционал, отвечающий за отображение сообщений (визуальная часть)
3) Настройки всякие

2-я часть должна соответствовать 1-ой части.
Т.о. вначале приведение в порядок 1-ю часьт, а затем уже 2-ю.

Иначе - бардак.


 
Cobalt ©   (2005-05-23 15:49) [12]

Небольшой примерчик - каждая вкладка у тебя отображает сообщения с одним адресатом.
Соответственно у тебя должны быть предусмотрены структуры (из 2-ой части), отвечающие за
- хранение сообщений в текущей сесии
- связь сесии сообщений с визуальным контролом (вкладка TSheet, далее везде - мемо, едиты, кнопки - с адресацией по к-либо ID (номер сесии сообщений) memoTextSeesion12, btnSendMessage12 и т.д.)
Хотя, можно и вообще обойтись без имён, а хранить это в специальных структурах...

В общем - проблема проектирования.


 
jcrush ©   (2005-05-24 02:58) [13]

Мда.. все оказалось сложнее чем я думал... создать удалось а вот функционал не работает :((


 
jcrush ©   (2005-05-24 03:16) [14]

структура такая:

функция 1. отправка сообщений и вывод на экран 1
функция 2. вывод сообщений (если сообщение имеется в памяти) на экран 1
функция 3. подкраска своих и чужих сообщений (Экран 1) в зависимости от набора символов, так же установка атрибутов(жирности, цвета)...
функция 4. Скроллинг при получении и отправке сообщений
Функция 5. Загрузка Истории из файлов на Экран 1.

Эран 1 - richedit

впринципе я могу поделиться исходниками, если их не будут выдавать за свои, ну и спасибо за любую помощь..


 
jcrush ©   (2005-05-24 03:22) [15]

ICQ: 966255


 
Cobalt ©   (2005-05-26 15:30) [16]

Рекомендую отойти от функционального программирования, и перейти к объектно-оиентированного - это (ИМХО) лучший способ выделения функционала.

Ещё раз - см.
Cobalt ©   (23.05.05 15:42) [11]
Cobalt ©   (23.05.05 15:49) [12]

Сервер - [приём/отправка сообщений по пользователям] - [отображение сообщений по пользователям] - [подкраска/загрузка]

[отображение сообщений по пользователям] - [загрузка из "истории"]

Перед тобой стоит большая задача - самому спроектировать интерфейсы между этими функционалами.
P.S.
Исходники, я думаю, тут не помогут - надо (судя по всему) полностью перепроектировать.
То есть если кто тебе и поможет - так это напарник, который заинтересован в проекте.


 
jcrush ©   (2005-05-27 02:12) [17]

Пока напарников не имеется, пока я остановился на варианте Ega23



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

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

Наверх




Память: 0.52 MB
Время: 0.044 c
1-1116885258
Andrata
2005-05-24 01:54
2005.06.14
Как подгрузить фонт из ресурса?


4-1114153640
needle
2005-04-22 11:07
2005.06.14
как определить более подробный тип диска


3-1114757222
afanasic
2005-04-29 10:47
2005.06.14
Oracle -> BDE -> Delphi не читается BLOB


1-1117548684
lucifer
2005-05-31 18:11
2005.06.14
Ошибка: Symbol faReadOnly is specific to a platform


4-1114276037
Виталик
2005-04-23 21:07
2005.06.14
Вопрос по логону.