![]() |
Reagieren auf Ereignisse meines zur Laufzeit erzeugten Forms
hi,
siehe überschrift, ich habs so erstellt:
Delphi-Quellcode:
var
InfoForm: TForm;
Delphi-Quellcode:
InfoForm := TForm.Create(Application);
InfoForm.Height := 100; InfoForm.Width := 300; InfoForm.Color := $00423029; InfoForm.Position := poScreenCenter; InfoForm.BorderStyle := bsNone; InfoForm.AlphaBlendValue := 0; ich möchte aber nun auf ereignisse reagieren, wie "OnCreate" habs versucht mit "InforForm.OnCreate", aber wie es dann weitergehen würd (ob es überhaupt so geht) weiss ich nicht. wenn es jemand weiss bitte posten danke =) gruss silent |
das sollte gehen
Delphi-Quellcode:
bei manchen prozeduren, die du in ereignissen von Forms verwendest
InfoForm.OnCreate := NameDerProzedur;
musst du als Parameter für die Prozedur noch "Sender" nehmen. Bsp:
Delphi-Quellcode:
ich hoffe das hilft
procedure Prozedur_Fuer_ein_Eregnis(Sender: TObject);
mirage228 |
hoi,
danke für die hilfe :) klappt bei mir aber irgendwie nicht, hab das so:
Delphi-Quellcode:
procedure AlphaBlendCount(Sender: TObject);
var i: integer; begin InfoTimer.Enabled := True; if i <> 255 then begin i := i + 3; InfoForm.AlphaBlendValue := i; end else InfoTimer.Enabled := False; end; und zum aufrufen des timers das:
Delphi-Quellcode:
fehlermeldung ist "[Fehler] Unit1.pas(385): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'"
with TTimer.Create(InfoForm) do
begin InfoTimer.Enabled := False; InfoTimer.Interval := 5; InfoTimer.OnTimer := AlphaBlendCount; end; :( |
ich glaub des geht so:
Delphi-Quellcode:
<Edit>: Und das brauchste auch das With ... Do net mehr:
InfoTimer := TTimer.Create(InfoForm);
Delphi-Quellcode:
</edit>
InfoTimer := TTimer.Create(InfoForm);
InfoTimer.Enabled := False; InfoTimer.Interval := 5; InfoTimer.OnTimer := AlphaBlendCount; und du solltest die procedure AlphaBlendCount zwischen die anderen Ereignisprozeduren des Forms (über private und public) und dann musste schreiben
Delphi-Quellcode:
so sollte es gehen!
procedure TDasIstDasForm.AlphaBlendCount(Sender: TObject);
var i: integer; begin InfoTimer.Enabled := True; if i <> 255 then begin i := i + 3; InfoForm.AlphaBlendValue := i; end else InfoTimer.Enabled := False; end; mirage228 |
Warum erstellst du alles zur Laufzeit? :roll: Mach es doch zur Entwurfszeit und schmeiß in Projekt -> Optionen das Formular raus welche zur Laufzeit beim Start erzeugt werden sollen. Und wenn du es dann brauchst erzeugst du nur das Formular dynamisch. Alles was drauf und alles Ereignisse und Prozeduren ist kennt dein Programm schon - keine Sorge.
|
danke mirage ich versuch das mal ^^
luckie, ich erstelle sie zur laufzeit, weil ich beliebig viele brauche, je nachdem wieviele querys ich hab (irc client) :) danke^^ gruss silent |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz