Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.042 c
1-1117180990
pavel_guzhanov
2005-05-27 12:03
2005.06.14
создание и уничтожение компонентов в Run-Time


3-1115607472
KLEVO
2005-05-09 06:57
2005.06.14
База данных с SQL


1-1117600097
ORMADA
2005-06-01 08:28
2005.06.14
Drag n Drop + Ctrl


4-1113899638
dimasih
2005-04-19 12:33
2005.06.14
Документация по TService


4-1114073934
Ярослав
2005-04-21 12:58
2005.06.14
Текс контрола другого приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский