![]() |
|
|
#1
|
|||
|
|||
|
Есть чат :с общим чатом и с приватным чатом .Но приватный чат реализован так ,что он в одном фрейме с общим чатом ,просто там добавляется фраза приват и показывается только тому кому адресована.
Хочу сделать приват в отдельное окно с вкадками пользователей где происходит общение(типа как в аське).использую pagecontrol&tabsheet. Когда приходит сообщение приватное идет проверка есть ли вкладка с именем пользователся от которого пришло приватное сообщение (если есть то на ней и все пишеться) инач если нет то динамически создаю вкладку с именем от кого приват там создаю мемо ,кнопки и т.п. Работает это очень плохо и иногда ваще ни че не происходит..думаю ошибка в условии else... Подскажите как можно проще такое реализовать? |
|
#2
|
||||
|
||||
|
Без исходного кода предположить почему плохо работает я лично не берусь. Маловато информации.
|
|
#3
|
|||
|
|||
|
Код:
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;на кнопку 3 должен создаваться табшит с caption = from_ динамически так же создаються мемо,едит,кнопка... Я думаю что это немного геморный способ все это сделать ..как еще можно реализовать пм? |
|
#4
|
||||
|
||||
|
Лучше всего это все сделать создав собственный класс на основе TPageControl.
|
|
#5
|
|||
|
|||
|
а поподробнее :-)
|
|
#6
|
||||
|
||||
|
Вот вообщем этот компонент с клона Агента какраз выполняет то что ты хочешь...правдо тебе для этого потрудитсо надо чтоб она работал на тебя )))
![]() |
|
#7
|
|||
|
|||
|
В общем я хочу это реализовать вот так ...
если пришло приватное сообщение то ... сначало проверяем естьли tabsheet с заголовком ,который равен имени пользователя от кого пришло сообщение ,если оно так ,то в мемо на этом табшите выводим пришедшее сообщение,иначе создаем новый табшит с caption=от кого пришло сообщение,создаем там форму,кнопку,едит(для ввода сообщений)и выводим в созданом мемо сообдщение..вопрос правельным будет : Код:
if pagecontrol1.tabsheet.caption=(от кого пришло сообщение) |
|
#8
|
|||
|
|||
|
В общем хочу просто пока поэксперементирвоать с 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. |
|
#9
|
||||
|
||||
|
Вот по твой теме. Создает сразу 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
|
|||
|
|||
|
Да создать это не проблема..почему у меня не создаеться вкладка вот так?:
Код:
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
|
|||
|
|||
|
Код:
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
|
||||
|
||||
|
Цитата:
Ты допустил ошибку в двух местах. в имени закладки присваиваешь 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
|
|||
|
|||
|
Разобрался))теперь скажи мне пожалуйста как создать обект на конкретном табшите с заданым именем..тчонее как создать я знаю ,а вот как его разместить ?
делаю вот так Код:
memo:=tmemo.Create(self); memo.Parent:=page; memo.Name:='ioo'; memo.Left:=30; memo.Top:=30; memo.Width:=50; memo.Height:=50 но он ваще как будто за ним создаеться ..мне нужно например на конкретном tabsheet с caption:='boo' например. |
|
#14
|
||||
|
||||
|
В сторке
Код:
memo.Parent:=page.Pages[1]; |
|
#15
|
|||
|
|||
|
Приветчтвую! Сорри за офтоп. Сразу к делу. Подскажите где скачать listutil? Поисковик не предагать)))
|