Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

отлавливать показ формы   Найти похожие ветки 

 
Тоник   (2008-01-25 21:29) [0]

Привет мастера!!!
у меня вопрос: onshow,oncreate не устраивают по неким причинам.
мне как бы нужно загрузить процедуру,но почле загрузки формы. как раз так ив onshow это не срабатывает пишет ошибку onhide or onshow.
пробовал включать таймер,тоже не прокатило.
че делать то?


 
{RASkov} ©   (2008-01-25 21:45) [1]

Давай по русски... Что хочешь?, где хочешь?, зачем хочешь?)

> пишет ошибку onhide or onshow

мудришь с Visible ?

ЗЫ Процедуры не грузятся.... процедуры выполняются


 
Amoeba ©   (2008-01-25 21:50) [2]

Да и код не помешало бы предъявить ...


 
PIMP   (2008-01-25 21:51) [3]


> у меня вопрос: onshow,oncreate не устраивают по неким причинам

какие причины? я там все пишу и ниче


 
Тоник   (2008-01-25 21:55) [4]

ну смотрите, допустим есть процедура которая создает форму и много че делает.
но она должна выполняются только после загрузки формы.
т.е. выглядит это так, если процедуру нацепить на баттон. то когда форма грузанулась нажимаю на кнопку все ок работает!
но стоит ту же процедуру засунуть в Onshow, то сразу вылетает ошибка
Cannot change Visible in OnShow or OnHide


 
PIMP   (2008-01-25 21:56) [5]

Лучше один раз увидеть, чем сто раз услышать. Давай исходник!


 
Тоник   (2008-01-25 21:57) [6]

procedure TForm1.Load;
var
 bmp:Tbitmap;
Begin

 DoubleBuffered := True;
 Color := clFuchsia;
 TransparentColorValue :=   Color;  
 BorderStyle := bsNone;

 new_form := TForm.Create(nil);
 With new_form Do
 Begin
   TransparentColor := False;
   Parent := Form1.Parent;
   Name := "forma";
   Caption := Form1.Caption;
   FormStyle := Form1.FormStyle;
   BorderStyle := Form1.BorderStyle;
   BorderIcons := [];
   Position := Form1.Position;
   Width := Form1.Width;
   Height := Form1.Height;
   Left := Form1.Left;
   Top := Form1.Top;
   OnMouseDown := Form1.FormMouseDown;
   DoubleBuffered := True;
   Visible := False;
 End;

load_xz;
end;


 
DVM ©   (2008-01-25 22:01) [7]


> Тоник   (25.01.08 21:57) [6]

И это работает???


 
PIMP   (2008-01-25 22:02) [8]

Я так понял, ты хочешь сделать мультиоконность. Или сплэшэкран.


 
Тоник   (2008-01-25 22:03) [9]

по идее таймер должен выручить, хотя точно я не уверен.
по-крайней мере если сделать так:
onshow:
timer1.interval := 1000;
timer1.enabled := true;

...
timer1timer:
Load;
timer1.enabled := false;

то процедура будет выполняться много-много раз.
если tiemer1.enabled =false засунуть в начало процедуры, то это не поменяет исход :( у меня так


 
Тоник   (2008-01-25 22:04) [10]


> Я так понял, ты хочешь сделать мультиоконность. Или сплэшэкран.


что то вроде того


 
{RASkov} ©   (2008-01-25 22:08) [11]

> [6] Тоник   (25.01.08 21:57)

Дурнее не мог придумать?
Что ТЫ ПЫТАЕШЬСЯ СДЕЛАТЬ-то?
Что за мультиоконность? А сплэш не так делается...


 
PIMP   (2008-01-25 22:09) [12]

File -> New -> Form
потом в uses добавь кое чего. Догадайся чего


 
DVM ©   (2008-01-25 22:09) [13]

Я не очень понял, зачем вся эта странная байда, но как вариант можно попробовать послать собственное сообщение из OnShow и в обработчике делать все что надо.


 
Тоник   (2008-01-25 22:13) [14]


> DVM

а как мне послать сообщение из onshow?


 
{RASkov} ©   (2008-01-25 22:14) [15]

> [14] Тоник   (25.01.08 22:13)

PostMessage


 
DVM ©   (2008-01-25 22:14) [16]


> Тоник   (25.01.08 22:13) [14]

PostMessage();


 
Тоник   (2008-01-25 22:17) [17]

мне не понятно кому и какое сообщение посылать.


 
{RASkov} ©   (2008-01-25 22:18) [18]

> [17] Тоник   (25.01.08 22:17)

Ну ответь же на вопросы в [11] :( Хотябы на второй


 
PIMP   (2008-01-25 22:18) [19]

http://persepoles.narod.ru/TRTRTR.rar
сплэш скрин написано за 3 минуты. Самый плохой способ, но тебе сойдет )))


 
DVM ©   (2008-01-25 22:19) [20]

Посылать окну той формы, от которой обработчик OnShow.
Сообщение WM_TONIK = WM_USER + 666;


 
Тоник   (2008-01-25 22:20) [21]

я пытаюсь сделать форму по картинке! все работает если процедура в кнопке. а если в onshow, то я писал какая ошибка. :(


 
Тоник   (2008-01-25 22:22) [22]


> DVM

ну спасибо :)))
а на самом деле какое сообщение ? :(


 
DVM ©   (2008-01-25 22:23) [23]


> а на самом деле какое сообщение ?

Я вполне серьезно.

А сплэш скрин лучше делать так:

Application.Initialize;
 SplashForm := TSplashForm.Create(Application);
 try
   SplashForm.Show;
   SplashForm.Update;
   while SplashForm.tmrMain.Enabled do Application.ProcessMessages;
 finally
   FreeAndNil(SplashForm);
 end;
 Application.CreateForm(TfrmMain, frmMain);
 Application.Run;


На SplashForm лежит ьаймер. который отрабатывает и выключает сам себя.


 
PIMP   (2008-01-25 22:31) [24]


> DVM ©   (25.01.08 22:23) [23]

Я конечно понимаю, что способ [19] плохой. А чем он плох?


 
Тоник   (2008-01-25 22:31) [25]

сплэш форма динамическая


 
Тоник   (2008-01-25 22:36) [26]

в процедуре которую показывал дописываю
timerxz := TTimer.Create(nil);
 timerxz.Enabled := false;
 timerxz.Interval := 1000;
 timerxz.OnTimer := Timer1.OnTimer;
 timerxz.Enabled := True;
в timer1:
load;
timerxz.Enabled := false;

загружается в бесконечном цикле... будто таймер не вырубился


 
DVM ©   (2008-01-25 22:43) [27]


> А чем он плох?

Да ничем он не плох, кроме лишних зависимостей сплэш скрина и главной формы


 
DVM ©   (2008-01-25 22:45) [28]


> Тоник   (25.01.08 22:36) [26]

зачем ты все динамически то создаешь?

Ты объясни по человечески, что хочешь сделать. По шагам, что должно происходить. И я тебе предложу решение.


 
Тоник   (2008-01-25 22:50) [29]

Хочу создать форму по картинке.
Первая форма это контролы, вторая форма,которая создается динамически и есть та что по картинке.
у первой также transparentcolor =true; borderstyle = bsnone;
собственно вот. на форме кнопка по которой создается динамич.форма и главная форма транспарентиться.


 
DVM ©   (2008-01-25 22:55) [30]


> и главная форма транспарентиться.

это как?


 
DVM ©   (2008-01-25 22:56) [31]

Когда все произойдет, как это все должно выглядеть?


 
Тоник   (2008-01-25 23:01) [32]

транспарентиться. -> когда у формы transparentcolor = true; transparentcolorvalue = color;

когда все произойдет то главная форма становиться невидимой за исключением контролов, а динамически созданная, просто появляется. и она всегда позади первой формы,чтобы контролы были наружу :)


 
DVM ©   (2008-01-25 23:04) [33]


> и она всегда позади первой формы,чтобы контролы были наружу
> :)

Зачем такие извращения? Ты хочешь получить окно нестандартной формы, но с контролами? Это ж и без извратов можно сделать.


 
Тоник   (2008-01-25 23:07) [34]

у меня там с альфа каналом. но проблему все равно решить надо! только как...


 
Тоник   (2008-01-25 23:07) [35]

кстати спасибо что уделяете время!:)


 
DVM ©   (2008-01-25 23:13) [36]


> у меня там с альфа каналом. но проблему все равно решить
> надо! только как...

Единственно верный в этом случае путь - рисовать все контролы самому. Конечно это непросто, но зато без выкрутасов с прозрачными формами.


 
DVM ©   (2008-01-25 23:15) [37]


> Тоник

Какие контролы нужны? Обычно такие окна и контролы ипользуют красиво отрисованные под стать окну, поэтому имеет смысл рисовать все самому.


 
DVM ©   (2008-01-25 23:20) [38]


> Тоник

Кстати, ты форму сделал по тому образцу, что здесь antonn недавно демонстрировал?


 
Тоник   (2008-01-25 23:21) [39]

ну просто уже все работает за искл. загрузки формы автоматом....жалко как то:(


 
DVM ©   (2008-01-25 23:26) [40]

Ну раз жалко, тогда надо дальше мучить этот странный вариант. Ща может попробую воспроизвести то, что у тебя.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.048 c
2-1201435769
Alex_Storm
2008-01-27 15:09
2008.02.17
DBCombobox


2-1201302467
altatr
2008-01-26 02:07
2008.02.17
Memo - запись в одну строку


15-1200651128
@!!ex
2008-01-18 13:12
2008.02.17
полицейское государство?


2-1200977987
Skyle
2008-01-22 07:59
2008.02.17
Коллизия имён функций. Общий вопрос.


15-1200464919
Torry
2008-01-16 09:28
2008.02.17
Системы документоборота для офиса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский