![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание динамических обьектов и работа с ними, определить имена [D7]
jcrush © (2005-05-23 08:10:00)Создавать динамические обьекты я умею, а вот работать с ними нет, у меня создаются TabControl с Caption которые я беру из списка по клику, мне нужно создать в TabCheet memo, примеры тоже по этому есть...
Но как мне потом определить чтобы ну допустим добавить текст в нужное мне memo и как создать memo с нужным именем?
конкртеный пример при клике по Caption нужно создать richedit и добавить текст именно в тот richedit который имеет имя заголовка TabControl
спасибо!
jcrush (2005-05-27 02:12:00) [1]Пока напарников не имеется, пока я остановился на варианте Ega23
Cobalt (2005-05-26 15:30:00) [2]Рекомендую отойти от функционального программирования, и перейти к объектно-оиентированного - это (ИМХО) лучший способ выделения функционала.
Ещё раз - см.
Cobalt © (23.05.05 15:42) [11]
Cobalt © (23.05.05 15:49) [12]
Сервер - [приём/отправка сообщений по пользователям] - [отображение сообщений по пользователям] - [подкраска/загрузка]
[отображение сообщений по пользователям] - [загрузка из "истории"]
Перед тобой стоит большая задача - самомуспроектировать интерфейсы между этими функционалами.
P.S.
Исходники, я думаю, тут не помогут - надо (судя по всему) полностью перепроектировать.
То есть если кто тебе и поможет - так это напарник, который заинтересован в проекте.
jcrush (2005-05-24 03:22:00) [3]ICQ: 966255
jcrush (2005-05-24 03:16:00) [4]структура такая:
функция 1. отправка сообщений и вывод на экран 1
функция 2. вывод сообщений (если сообщение имеется в памяти) на экран 1
функция 3. подкраска своих и чужих сообщений (Экран 1) в зависимости от набора символов, так же установка атрибутов(жирности, цвета)...
функция 4. Скроллинг при получении и отправке сообщений
Функция 5. Загрузка Истории из файлов на Экран 1.
Эран 1 - richedit
впринципе я могу поделиться исходниками, если их не будут выдавать за свои, ну и спасибо за любую помощь..
jcrush (2005-05-24 02:58:00) [5]Мда.. все оказалось сложнее чем я думал... создать удалось а вот функционал не работает :((
Cobalt (2005-05-23 15:49:00) [6]Небольшой примерчик - каждая вкладка у тебя отображает сообщения с одним адресатом.
Соответственно у тебя должны быть предусмотрены структуры (из 2-ой части), отвечающие за
- хранение сообщений в текущей сесии
- связь сесии сообщений с визуальным контролом (вкладка TSheet, далее везде - мемо, едиты, кнопки - с адресацией по к-либо ID (номер сесии сообщений) memoTextSeesion12, btnSendMessage12 и т.д.)
Хотя, можно и вообще обойтись без имён, а хранить это в специальных структурах...
В общем - проблема проектирования.
Cobalt (2005-05-23 15:42:00) [7]2 jcrush © (23.05.05 12:32)
Насколько я понял - ты единственный разработчик.
К сожалениюю, в дистрибутив не входят исходники, чтобы дать тебе лучший совет :(
Посему всё бремя анализа структуры и функционала возлагается на тебя.
Но на первый взгляд -
1) функционал, отвечающий за взаимодействие с сервером (чисто невизуальная часть)
2) функционал, отвечающий за отображение сообщений (визуальная часть)
3) Настройки всякие
2-я часть должна соответствовать 1-ой части.
Т.о. вначале приведение в порядок 1-ю часьт, а затем уже 2-ю.
Иначе - бардак.
Ega23 (2005-05-23 15:18:00) [8]Для визуалок лучше ControlCount
Только не забывать где какой Parent
msguns (2005-05-23 15:05:00) [9]>jcrush © (23.05.05 12:32) [7]
>вот на это ругаться не будет да?
>for i:=0 to ComponentCount-1 do
Для визуалок лучше ControlCount
Ega23 (2005-05-23 12:35:00) [10]похоже именно то что мне нужно
Далеко не факт. Это одна из возможных реализаций (не самая лучшая, кстати) твоей "мини-задачи" ( созадть два memo и одну кнопку, при нажатии которой добавить ....).
В общем и целом - Cobalt правильно написал.
jcrush (2005-05-23 12:32:00) [11]вот на это ругаться не будет да?
for i:=0 to ComponentCount-1 do
Завтра попробую... очень интересно похоже именно то что мне нужно, большое спасибо :)
Ega23 (2005-05-23 12:20:00) [12]На
procedure RxDBLookupCombo1DropDown(Sender: TObject);
внимания не обращать. Атавизьм остался... :о)
Ega23 (2005-05-23 12:19:00) [13]Можно увидеть конкретный пример, самый простой допустим
созадть два 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.
jcrush (2005-05-23 12:06:00) [14]Привет Cobalt, как я могу создать классы кода я их никогда не создавал, что это такое?
Можно увидеть конкретный пример, самый простой допустим
созадть два memo и одну кнопку, при нажатии которой добавить текст '1'в один мемо и '2' в другой, но независимо от того в каком порядке создан memo, т.е. покажите как определить куда добавить текст в зависимости Кому сообщение?
Cobalt (2005-05-23 10:59:00) [15]Для начала тебе надо провести анализ твоей программы - какие в ней есть сущности.
Все контролы - отвечают за что-то.
Ветки общения с людьми.
Один (несколько) текущих подготовленных к отправке сообщений каждому из людей.
Всё это тебе предстоит проанализировать и составить чёткую картину взамиодействия, создать структуры (классы), которые будут отвечать за конкретный функционал, связывать компоненты.
Итогда этот вопрос разрешится автоматически.
jcrush (2005-05-23 09:29:00) [16]Хорошо посмотри на картинку программы:
http://stfw.ru/forums.php?m=posts&q=604
Сейчас Richedit не денамический, задача загружать добавлять и красить строки, пока все это реализованно через один richedit, в который добавляются и грузяться строки, при нажатии Caption загружается из файла последняя строка в Richedit, типа эмитации того что Richedit динамический..
Cobalt (2005-05-23 08:27:00) [17]Это уже зависит от всейзадачи, а не от того кусочека, что ты привел.
Это фишка проектирования.
Так что приводи ВСЮ задачу.