Форум: "Начинающим";
Текущий архив: 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.041 c