Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.09.2009, 01:01
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию Нужна помощь

Есть чат :с общим чатом и с приватным чатом .Но приватный чат реализован так ,что он в одном фрейме с общим чатом ,просто там добавляется фраза приват и показывается только тому кому адресована.
Хочу сделать приват в отдельное окно с вкадками пользователей где происходит общение(типа как в аське).использую pagecontrol&tabsheet.
Когда приходит сообщение приватное идет проверка есть ли вкладка с именем пользователся от которого пришло приватное сообщение (если есть то на ней и все пишеться) инач если нет то динамически создаю вкладку с именем от кого приват там создаю мемо ,кнопки и т.п.
Работает это очень плохо и иногда ваще ни че не происходит..думаю ошибка в условии else...
Подскажите как можно проще такое реализовать?
Ответить с цитированием
  #2  
Старый 26.09.2009, 03:41
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Без исходного кода предположить почему плохо работает я лично не берусь. Маловато информации.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 26.09.2009, 12:15
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Код:
if Copy(s,1,2) = '#P' then begin
   Delete(s,1,2);

   to_ := Copy(s,1,Pos(';',s)-1);{присваеваем кому}
   Delete(s,1,Pos(';',s));{присваеваем от кого}

   from_ := Copy(s,1,Pos(';',s)-1);

   if (to_ = nickname)or(from_ = nickname) then
for I := 0 to form3.PageControl.PageCount - 1 do
 if form3.PageControl.Pages [i].Caption =from_  then 
form3.button2.click {Сообщение заноситься в уже существующюю вкладку т.е. пм происходит с челом с которым уже оно было..}
else 
form3.button3.click;{здесь будет динамиячески создаваться вкладка ,с мемо для отображения,кдитом для ввода текста и с кнопкой посылания сообщения}
{ТЕПЕРЬ ФОРМА 3}
button2.click;
buitton3.click;
помогите реализовать обработчик на кнопку 2 и кнопку 3 на третьей форме...на нажатии второй кнопки должна делаться активная вкладка у которой caption равно значению переменной from_..
на кнопку 3 должен создаваться табшит с caption = from_ динамически так же создаються мемо,едит,кнопка...

Я думаю что это немного геморный способ все это сделать ..как еще можно реализовать пм?
Ответить с цитированием
  #4  
Старый 26.09.2009, 14:01
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Лучше всего это все сделать создав собственный класс на основе TPageControl.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 02.10.2009, 22:55
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

а поподробнее :-)
Ответить с цитированием
  #6  
Старый 02.10.2009, 23:08
Аватар для r1x
r1x r1x вне форума
Начинающий
 
Регистрация: 15.07.2009
Адрес: KZ, Pavlodar
Сообщения: 110
Репутация: 10
По умолчанию

Вот вообщем этот компонент с клона Агента какраз выполняет то что ты хочешь...правдо тебе для этого потрудитсо надо чтоб она работал на тебя )))
Вложения
Тип файла: rar ChatControl.rar (3.8 Кбайт, 10 просмотров)
__________________
[ iNewStar.Ru ] - Продам!
Вопросы в ПМ
Ответить с цитированием
  #7  
Старый 02.10.2009, 23:51
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

В общем я хочу это реализовать вот так ...
если пришло приватное сообщение то ...
сначало проверяем естьли tabsheet с заголовком ,который равен имени пользователя от кого пришло сообщение ,если оно так ,то в мемо на этом табшите выводим пришедшее сообщение,иначе создаем новый табшит с caption=от кого пришло сообщение,создаем там форму,кнопку,едит(для ввода сообщений)и выводим в созданом мемо сообдщение..вопрос правельным будет :
Код:
if pagecontrol1.tabsheet.caption=(от кого пришло сообщение)
Вопрос такой.Все закладки нумеруются например tabsheet,tabsheet1,tabsheet2... мое условие будет проверять все caption tabsheet'ов..или только у конкретного Tabsheet?и можно будет создать на каждом tabsheet'e кнопку,мемо,едит с одинаковым названием..?Простите за белибирду ,очнь трудно выразить то что хочу
Ответить с цитированием
  #8  
Старый 03.10.2009, 23:45
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

В общем хочу просто пока поэксперементирвоать с tabsheet и pagecontrol .
вот значит код:
Код:
begin
  PageControl := TPageControl.Create(Self);
  PageControl.Parent := Self;
for i:=0 to pagecontrol.pagecount -1 do
if pagecontrol.pages [i].caption <> '1' then
  begin
  tabsheet:=ttabsheet.Create(self);
  tabsheet.caption:='1';
  tabsheet.PageControl:=pagecontrol;
  end;
Почему не создаеться tabsheet ?
изначально не существует ни одного tabsheet.
Ответить с цитированием
  #9  
Старый 04.10.2009, 06:43
Аватар для TolAlik
TolAlik TolAlik вне форума
Прохожий
 
Регистрация: 02.10.2009
Сообщения: 41
Репутация: 10
По умолчанию

Вот по твой теме. Создает сразу 9 вкладок, остается под себя код оптимизировать.
Код:
var
  Page:TPageControl;

procedure TForm1.Button1Click(Sender: TObject);
  var
  i:integer;

begin
  if Page = nil then
  begin
    Page := TPageControl.Create(Self);
    Page.Parent := Self;
  end;
  for i := 0 to 9 do
    with TTabSheet.Create(Self) do
    begin
       PageControl := Page;
       Caption := 'TabSheet #' + IntToStr(i);
    end;
end;
Ответить с цитированием
  #10  
Старый 04.10.2009, 23:25
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Да создать это не проблема..почему у меня не создаеться вкладка вот так?:
Код:
for i:=0 to pagecontrol.pagecount -1 do
if pagecontrol.pages [i].caption <> '1' then
  begin
  tabsheet:=ttabsheet.Create(self);
  tabsheet.caption:='1';
  tabsheet.PageControl:=pagecontrol;
  end;
Ответить с цитированием
  #11  
Старый 05.10.2009, 18:54
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Код:
var
i:integer;
s:integer;


page:tpagecontrol;
begin
Page := TPageControl.Create(Self);
    Page.Parent := Self;
    for s:= 0 to 0 do
    with TTabSheet.Create(Self) do
    begin
       PageControl := Page;
       Caption := 'TabSheet #' + IntToStr(i);
    end;

  for I := 0 to Page.PageCount - 1 do
 if Page.Pages [i].Caption ='TabSheet #' then
  showmessage('Такая вкладка существует')
end;
Не выводит сообщение такая вкладка существует!!
Ответить с цитированием
  #12  
Старый 05.10.2009, 20:21
Аватар для TolAlik
TolAlik TolAlik вне форума
Прохожий
 
Регистрация: 02.10.2009
Сообщения: 41
Репутация: 10
По умолчанию

Цитата:
Сообщение от Booo
Код:
       Caption := 'TabSheet #' + IntToStr(i);
    end;

  for I := 0 to Page.PageCount - 1 do
 if Page.Pages [i].Caption ='TabSheet #' then
  showmessage('Такая вкладка существует')
end;
Не выводит сообщение такая вкладка существует!!

Ты допустил ошибку в двух местах. в имени закладки присваиваешь I значение которой еще не заданно и пытаешься сравнить с незаконченным условием
Код:
Page := TPageControl.Create(Self);
    Page.Parent := Self;
    for s:= 0 to 0 do
    with TTabSheet.Create(Self) do
    begin
       PageControl := Page;
       Caption := 'TabSheet #' + IntToStr(s);
    end;

  for I := 0 to Page.PageCount - 1 do
 if Page.Pages [i].Caption ='TabSheet #'+IntToStr(i) then
  showmessage('Такая вкладка существует')
Ответить с цитированием
  #13  
Старый 05.10.2009, 22:39
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Разобрался))теперь скажи мне пожалуйста как создать обект на конкретном табшите с заданым именем..тчонее как создать я знаю ,а вот как его разместить ?
делаю вот так
Код:
memo:=tmemo.Create(self);
  memo.Parent:=page;
  memo.Name:='ioo';
  memo.Left:=30;
  memo.Top:=30;
  memo.Width:=50;
  memo.Height:=50
где page , это pagecontrol;
но он ваще как будто за ним создаеться ..мне нужно например на конкретном tabsheet с caption:='boo' например.
Ответить с цитированием
  #14  
Старый 08.10.2009, 06:43
Аватар для TolAlik
TolAlik TolAlik вне форума
Прохожий
 
Регистрация: 02.10.2009
Сообщения: 41
Репутация: 10
По умолчанию

В сторке
Код:
memo.Parent:=page.Pages[1];
нужно указать на какой в кладке ты хочешь создать компонент, например на на кладке под номером 1
Ответить с цитированием
  #15  
Старый 12.10.2009, 21:34
gromz gromz вне форума
Прохожий
 
Регистрация: 12.10.2009
Сообщения: 1
Репутация: 10
По умолчанию

Приветчтвую! Сорри за офтоп. Сразу к делу. Подскажите где скачать listutil? Поисковик не предагать)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter