|
#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
|
||||
|
||||
Вот вообщем этот компонент с клона Агента какраз выполняет то что ты хочешь...правдо тебе для этого потрудитсо надо чтоб она работал на тебя )))
[ iNewStar.Ru ] - Продам! Вопросы в ПМ |
#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? Поисковик не предагать)))
|