Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизФормы Найти похожие ветки
← →
Swinger (2002-03-26 23:22) [0]Здравствуйте! У меня в проекте есть главная форма, создаваемая при запуске программы, и другая, создающаяся динамически (могут существовать одновременно много копий этой формы). Динамическую создаю так: Form2:=TForm2.Create(Application);
Но при этом эта форма не отображается в таскбаре как отдельная программа. Т.е. даже если много форм динамически создалось, то всё равно в таскбаре будет только кнопка моей программы.. :( А мне бы хотелось чтобы каждая динамически создаваемая форма была отдельно выведена в таскбар (как форма для написания сообщения в ICQ).
← →
Swinger (2002-03-26 23:29) [1]И ещё один вопрос: (я просто пишу замену ICQ, поэтому такие вопросы.. :))
При двойном клике на имя пользователя выскакивает динамически создаваемая форма для написания сообщения. Как мне определить что такая форма (именно для этого пользователя!!) уже создана и как сделать на неё фокус? Т.е. чтобы пользователь не мог сразу писать два сообщения одному человеку. Он может одновременно в разных окнах писать сообщения разным людям, но не должен использовать два окна для написания одному. Я думал через АПИ, но я просто не силён в этом деле.. :(
И вообще я хотел узнать, как можно уже созданной форме (если, к примеру, у меня может быть одновременно 10 Form2) передать какую-то строчку с информацией? можно бы было делать Form2.textlabel.caption:="lalala", но форм Form2 сразу может быть несколько.. :( как передать определённой?
Заранее благодарен
← →
MBo (2002-03-26 23:40) [2]if Assigned(SomeForm)
но надо освобождать правильно (FreeAndNil)
Form2 несколько не может быть - внутренние имена будут
типа Form2_1 и т.д.
лучше при их создании заносить в список или массив, тогда к ним нет проблем обратиться
← →
Swinger (2002-03-26 23:55) [3]Спасибо за ответ! :)
1) Попытался я узнавать имя этих форм:
procedure TForm2.FormCreate(Sender: TObject);
begin
label3.caption:=Form2.Name;
end;
При создании первой формы - вылетает ошибка об access violation.. вторая форма создаётся с именем Form2, потом, как ты и сказал, Form2_1 и т.д.. Как избавиться от ошибки?
2)Как мне закрыть эту форму с помощью FreeAndNil?
я пытаюсь так:
procedure TForm2.Office97Button2Click(Sender: TObject);
var name:string;
begin
name:=Form2.Name;
FreeAndNil(name);
end;
Но при попытке так закрыть форму - access violation.. :(
3) И как мне потом обращаться, к примеру, к форме Form2_2? Я попытался сделать так: Form2_2.textlabel.caption:="lalala"; но он ещё ипри компиляции начал ругаться, т.к. такой формы конечно же нет..
Попытался я ещё сделать с If Assigned(Form2_2) но при компиляции сообщает что такой формы нет
← →
Swinger (2002-03-27 00:07) [4]Так.. ну с label3.caption:=Form2.Name; я разобрался: просто надо было её вызывать из первой формы, при создании динамической.. но ещё осталось много неотвеченных ответов.. :)
← →
MBo (2002-03-27 00:28) [5]FormList:TList;
после создания формы
FormList.Add(Form2);
обращаться
TForm2(FormList[i]).
уничтожать объект Free из его собственного обработчика нельзя
(можно только Release или установкой в Form2.Close Action:=caFree)
← →
MBo (2002-03-27 00:32) [6]кроме того, существует список Screen.Forms[I]
это самое простое решение
← →
Swinger (2002-03-27 09:13) [7]Спасибо за ответ! Обязательно сегодня попробую! :)
Остались ещё неотвеченными следующие вопросы: :)
1)Как сделать чтобы каждая форма выводилась внизу, там где пуск, (по-моему это таскбар называется, но я иногда торможу и поэтому сейчас неуверен.. :))
2) Как мне обращаться к этим формам? Ну, к примеру, я знаю как они называются (названия хранятся в листбоксе), как мне добавить в Memo1 на Form2 ещё текст? If Assigned(Form2_X) не будет работать, т.к. существует при компиляции только Форм2, а других её клонов нет.. :(
← →
panov (2002-03-27 09:55) [8]>Swinger © (27.03.02 09:13)
Новую ветку создавай.
← →
reonid (2002-03-27 09:59) [9]Чтобы форма появилась в таскбаре:
SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE) or
WS_EX_APPWINDOW);
← →
Nikolay M. (2002-03-27 11:34) [10]> И ещё один вопрос: (я просто пишу замену ICQ, поэтому такие вопросы.. :))
хм...
а ты уверен, что если возникают такие вопросы, то сможешь написать клон аськи?
а как ты собираешься отправлять/принимать сообщения? руками или через какую-то готовую компоненту? если через компоненту, то какую?
в свое время тоже пытались сделать нечто, но обломали зубы, хотя и многому научились, поэтому интересно знать, как идут дела у других.
← →
Swinger (2002-03-27 23:17) [11]2 panov почему?
2 reonid А можно чуть поподробней (желательно с примером)? :) просто я плохо знаю как работать с АПИ.. :(
2 Nikolay M. Надеючь, что уверен.. :) Просто я в чём-то силён, а в чём-то нет.. :) Отправление\принятие сообщений идёт через встроенную компоненту FastNet.. там есть что-то вроде NMMSG и NMMSGSERVER. Вначале думал об Инди, но пока решил остановится на фастнете. Всё, обо что "ломаю зубы", спрашиваю тут.. :)
Не отвеченным остался ещё один вопрос : :)
Как мне обращаться к этим формам? Ну, к примеру, я знаю как они называются (названия хранятся в листбоксе), как мне добавить в Memo1 на Form2 ещё текст? If Assigned(Form2_X) не будет работать, т.к. существует при компиляции только Форм2, а других её клонов нет.. :(
← →
Swinger (2002-03-28 09:05) [12]Ну помогите же кто-нибудь! :) мне просто это ооочень надо... :(
← →
MBo (2002-03-28 09:19) [13]procedure TForm1.Button1Click(Sender: TObject);
begin
inc(f2count);
Application.CreateForm(TForm2, Form2);
form2.Name:="Form2"+inttostr(f2count);
form2.Show;
end;
procedure TForm1.Button2Click(Sender: TObject);
var k:integer;
s:string;
begin
s:="Form2"+edit1.text;
for k:=0 to Screen.FormCount-1 do
if Screen.Forms[k].name=s then begin
Screen.Forms[k].Caption:="OK";
Screen.Forms[k].bringtofront;
break;
end;
end;
← →
Swinger (2002-03-28 16:10) [14]Спасибо! :)
← →
Nikolay M. (2002-03-28 17:25) [15]
> Отправление\принятие сообщений идёт через встроенную компоненту
> FastNet.. там есть что-то вроде NMMSG и NMMSGSERVER. Вначале
> думал об Инди, но пока решил остановится на фастнете.
Тогда я бы скромно посоветовал смотреть на то, что ты сейчас делаешь, как на программу, которая никогда не будет написана, но которая, тем не менее, поднимет уровень твоей квалификации - это уже немало.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c