Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Создание формы на приложении
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию Создание формы на приложении - 08.01.2005, 17:44

Люди...помагите плз... кароче...проблема такая....
у меня на форме есть Treeview и в нём есть несколько строк...
и я хочу что бы при нажатии на одну из строк создавалось окно с именем этой строки. вот код :
Код:
procedure tform1.Treeview1.ondblclick(object:tsender);
begin
if treeview.selected<>nil then begin 
newform:=Tnewform.create(application);
newform.caption:=treeview1.selected.text;
newform.show;
........
это всё прекрасно работает....
а мне нужно что бы если я ещё раз нажал на ту же строку... 2 окно не создавалось!!... кароче...я думаю что нужно сделать что-то типа посика окна стакм же именем и если такое окно имеется то создавать ещё раз его не нада.... ну или что-то типатого...кароче...кто понял всё что щас написал...помогите плз...если нет...постараюсь как нить по другому объяснить......
Ответить с цитированием
  (#2 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 08.01.2005, 19:08

Можно сделать так: объявить newform как глобальную переменную (судя по исходнику так оно уже и есть), при инициализации приложения и разрушении newform установить newform:=nil. А в процедуре tform1.Treeview1.dblclick проверять
Код:
if newform<>nil then exit;
Ответить с цитированием
  (#3 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию 08.01.2005, 19:57

видимо немного не так поняли....... кароче...
эта форма должна создаваться при нажатии на разные строки..
т.е. допустим в treeview есть 3 строки
первая
вторая
третья(допустим у них такие названия)
я нажимаю на первую и создаётся окно newform c caption:='первая';
нажимаю на вторую создаётся второе..а я хочу что бы если я нажимаю ещё раз на первую,то что б окно не создавалось,а лишь принимало setfocus;а то я буду вечно кликать на 1 и будет бесконечно открываться окно..
кароче...чтобы было понятно... я пишу чат для Lan типа ICq и хочу что бы как там окно открывалось...
Ответить с цитированием
  (#4 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 08.01.2005, 20:08

так надо _одну_ форму создать, а по нажатию делать ей show да caption'ы ставить
Ответить с цитированием
  (#5 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию 08.01.2005, 22:33

Dian извени..но ты ICQ пользовался..???? ели да то ты видел как там??..я вот хочу так же чтобы работало
Цитата:
так надо _одну_ форму создать, а по нажатию делать ей show да caption'ы ставить
как ты говоришь он просто будет форму переименовывать и всё
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию 08.01.2005, 22:35

я вообще думаю сделать через ЖО по русски
т.к. у меня типа чат... сделать чтобы при коннекте какого нить юзера ему создавалось окно и если кто нить захочет ему что нить написать то это окно просто открывается...но это ЧУШЬ....я так не хочу..это лишний геморрой
Ответить с цитированием
  (#7 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 09.01.2005, 11:32

Действитель не так понял.

Тогда вижу два решения:[list]
1. создать массив form_was_created: array of boolean. При коннекте какого-то юзера увеличивать его (массива т.е.) размерность на единицу, а юзеру присваивать соответствующий номер. Когда кто-то хочет початиться с юзером - устанавливаешь значение соответствующего массива в true.

2. Немного труднее, но логичней. Модернизировать класс ttreenode. Добавить в него буленувскую переменную.[list]
Ответить с цитированием
  (#8 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию 09.01.2005, 15:40

нада попробывать...только я немного не понял как это сделать....
Ответить с цитированием
  (#9 (permalink)) Старый
GOre GOre вне форума
Member
 
Сообщений: 191
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 09.03.2004
По умолчанию 10.01.2005, 14:40

А FindWindow из WinAPI не подойдет?

код на c++
Код:
...
HWND hWnd = FindWindow("TForm", TreeView->Selected->Text.c_str());
if (hWnd) ShowWindow(hWnd, SW_SHOW);
else
...
Ответить с цитированием
  (#10 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 10.01.2005, 17:16

FindWindow это, конечно, хорошо, вот только зачем, если окна свои собственные.

inho оптимальный вариант - создавать форму и прикреплять указатель на нее непосредственно к узлу дерева.
Ответить с цитированием
  (#11 (permalink)) Старый
GOre GOre вне форума
Member
 
Сообщений: 191
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 09.03.2004
По умолчанию 10.01.2005, 17:23

to Dian
воистину это хорошее решение

Ответить с цитированием
  (#12 (permalink)) Старый
ParaSenok ParaSenok вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.01.2005
По умолчанию 10.01.2005, 18:11

спасибо огромное но я уже разобрался....
всётаки надабыло действиельно использвать finwindow..
GOre...какты говоришь не работает.. почти, т.к. 2параметр у findwindow идёт как char..ау тебя как String....
кароче я напишу код..вдруг каму понадобится...
Код:
procedure treeview1.ondblclick....;
var find:hwnd;
begin
find:= findwindow(nil,PChar(treeview1.Selected.text);
if find<>0 then SetForegriundWindow(find) else
....здесь код создания окна .....
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание тени на приложении BOING Программирование графики 1 24.11.2008 10:11
Работа с таймером в приложении без формы Виталик 1 Delphi 15 13.06.2007 00:19
Перетаскивания Формы на приложении stikker C++ Builder 5 20.03.2007 17:39
Как переодически вызывать формы на приложении Искатель креков Delphi 10 04.01.2007 09:08
Перетаскивание формы на приложении вишенка Delphi 1 19.12.2006 08:48
Создание графики в SDI-приложении Mr. White Visual C++ 3 14.11.2006 19:34
Создание потоков в приложении |ina C++ Builder 9 15.07.2006 17:46
Создание полей на приложении Dimson C++ Builder 2 12.10.2005 14:51
Перетаскивание формы на приложении liss Delphi 1 05.07.2004 10:42
Создание список окон в приложении y0zh C++ Builder 1 18.06.2004 17:40
Создание com файла на приложении alexgeo Assembler 9 26.02.2004 20:15
Создание AVI файла на приложении Anonymous Delphi 0 23.01.2004 16:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов