![]() |
Zählen wie oft eine Form aufgerufen worden ist
Hallo leute,
hab ein kleines problem, und zwar: ich möchte in einem Label zählen wie oft eine Form aufgerufen worden ist Beispiel: Ich möchte zählen wie oft Form6 aufgerufen worden ist: Form6 wurde 5 mal aufgerufen Label: Form6 wurde 5 mal aufgerufen Hat jemand eine idee? Wäre nett von euch wenn ihr mir helfen könnt Mfg alanblack |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hi Alan. :hi:
Das könnte so gehen. (Ich habe es nicht getestet, es sollte aber funktionieren ;) )
Delphi-Quellcode:
var
i, CountForm1, CountForm2: Integer; begin CountForm1 := 0; CountForm2 := 0; with Screen do for i := 0 to pred(FormCount) do if Forms[i] is TForm1 then inc(CountForm1) else if Forms[i] is TForm2 then inc(CountForm2); lblForm1.Caption := IntToStr(CountForm1); lblForm2.Caption := IntToStr(CountForm2); |
Re: Zählen wie oft eine Form aufgerufen worden ist
Geht es nicht fast einfacher, im FormOnActivate eine Variable immer höher zu zählen oder irre ich mich da?
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Das wäre weder einfacher noch vom Konzept her "sauber", da du hierfür globale Variablen bräuchtest.
Außerdem müsste man dann sichergehen, dass beim Schließen auch wirklich die Variable heruntergezählt wird. Die eine Schleife in meinem Schnipsel liefert exakt die Anzahl der geöffneten Forms (selbst wenn sie nicht sichtbar sind). Das auch nur dann wenn man es braucht ;) |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hi,
Vielen Dank für die Antworten. Ich möchte aber noch was dazu sagen: Ich möchte nich zählen wie viele Forms offen sind sondern wie oft (zb Form2) seid dem starten des progs geöffnet worden ist. Auch wenn das Fenster wieder geschlossen worden wurde soll es nicht runterzählen.. mfg alanblack |
Re: Zählen wie oft eine Form aufgerufen worden ist
:lol:
Tja, dann wäre Jörns Vorschlag wohl doch nicht falsch. ;) |
Re: Zählen wie oft eine Form aufgerufen worden ist
Delphi-Quellcode:
hm, zu einfach um hilfreich zu sein!?
var
zaehler: Integer = 0; procedure TForm1.FormActivate(Sender: TObject); begin inc(zaehler); end; mfg stefan |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hi nochma :?
öhm Jörn wie könnte so eine Variable denn aussehen? könntest du mir vll. ein Beispiel machen wär nett Vielen Dank alanblack |
Re: Zählen wie oft eine Form aufgerufen worden ist
Zitat:
Scherz bei Seite. Wie soll sie aussehen? Einfach eine globale Integer-Variable in der Hauptform, die jedes mal inkrementiert wird, wenn ein Formular aufgerufen wird. Wo ist da das Verständinsproblem bitte sehr? |
Re: Zählen wie oft eine Form aufgerufen worden ist
ähm, leute!!! Wieso globale Variable?? Man kann auch in Public des Mainforms eine Variable deklarieren und diese dann hochzählen.. :?
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Womit sie im Prinzip für alle anderen Formen global wäre. ;)
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Da er die form2 ja nur öffnen will (und nicht jedes mal 'createn') kann er es sehr wohl als feld in form2 definieren und im konstruktor inkrementieren...da kann er die regel da aufnehmen wo sie passiert :shock:
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Zitat:
Das Prob liegt dabei dass ich nicht genau weiß wie ich das hochzähle - also wie ich das in code umwandle Mfg alanblack |
Re: Zählen wie oft eine Form aufgerufen worden ist
Mal OT: Ich frage mich schon die ganze Zeit, was an globalen Variablen so schlimm sein soll? Kann mir das vielleicht jemand erklären?
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Zitat:
Delphi-Quellcode:
Hatte oben im konstruktor geschrieben! ...is natürlich blöd sinn, sondern am besten in der virtuellen methode show (override) von TForm2.
inc(FShowCount);
|
Re: Zählen wie oft eine Form aufgerufen worden ist
huhu
also du könntest auch einfach beim onactivate der form [1,2 oder 3 (oder auch 67) :P] eine textdatei schreiben. das programm startet und lädt die zahl, welche in der datei ist. danach, wenn die form aufgerufen wird, wird die zahl um eins erhöht und die datei überschrieben. ist eigentlich verdammt einfach. der nachteil wäre halt, dass es eine zusätzliche datei braucht, aber ich als noob würde das problem so lösen! :D :balloon: |
Re: Zählen wie oft eine Form aufgerufen worden ist
Zitat:
Globale Variablen: Public-Membervariablen der Klasse Lokale Variablen: Private-Membervariablen der Klasse Ich hoffe ich habe jetzt keinen Blödsinn geredet. |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hi,
Ich habe die Codes ausprobiert funktionieren tun sie zwar (project wird compilert) doch zählen tut es nicht... :roll: Ich erkläre nochmal genau was ich will :stupid: Also: In meinen Project taucht (öffnet sich von alleine) die Form2 auf und schließt sich wieder. Auf einen Klick von einem Button möchte ich das im Label angezeigt wird wie viele bereits geöffnet worden sind! Wie bekomme ich das hin? Vielen Dank alanblack |
Re: Zählen wie oft eine Form aufgerufen worden ist
so übersteht das auch ein schließen des programms:
Delphi-Quellcode:
procedure TForm1.IntToReg(path, name: string; wert: integer);
var regist: TRegistry; begin try regist := TRegistry.Create; regist.RootKey := HKEY_CURRENT_USER; regist.OpenKey(path, true); regist.WriteInteger(name, wert); finally regist.Free; end; end; function TForm1.RegToInt(path, name: string): integer; var regist: TRegistry; begin Try try regist := TRegistry.Create; regist.RootKey := HKEY_CURRENT_USER; regist.OpenKey(path, true); result := regist.ReadInteger(name); finally regist.Free; end; Except result := -1; end; end; Procedure TForm1.FormCreate(Sender: TObject); const path = 'Software\alanblack\Programm\1.0'; begin if RegToInt(path, 'opens') = -1 then IntToReg(path, 'opens', 1) else IntToReg(path, 'opens', RegToInt(path, 'opens') + 1); end; |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hoi,
mhm ne das brauch ich eigentlich nich das er sich die ziffer "merkt" ich lasse einfach die OnCreate Procedure weg, geht das? Also die Ziffer soll nich gespeichert werden |
Re: Zählen wie oft eine Form aufgerufen worden ist
Kannst du nicht an der Stelle, wo Form2 geöffnet wird (timer, button etc.) des QT mit einbauen und wenn ihr keine Globale Variable wollt könnte man doch folgendes machen:
Delphi-Quellcode:
Wenn der Tag nicht schon anderweitig verwendet wird!
inc(form2.tag);
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Da kommt eine Fehlermeldung:
Zitat:
|
Re: Zählen wie oft eine Form aufgerufen worden ist
Also:
Angenommen Form1 ist die Hauptform: Form6 soll gezählt werden:
Delphi-Quellcode:
...
interface ... public Form6Zahl: Integer; ... TForm1.FormCreate(Sen....blabla); begin Form6Zahl := 0; end;
Delphi-Quellcode:
TForm6.FormShow(Sender..blabla);
begin inc(Form1.Form6Zahl); end; TForm6.ButtonClick(Sen....); begin ShowMessage('Die Form6 wurde '+IntToStr(Form1.Form6Zahl)+' mal aufgerufen.'); end; |
Re: Zählen wie oft eine Form aufgerufen worden ist
Zitat:
Delphi-Quellcode:
sollte klappen :-D
Form2.Tag := Form2.Tag + 1;
Weiß jetzt nicht ob dus gebrauchen kannst (hab nicht alles gelesen), nur zur Info wegen Zitat:
Viele Grüße, Sebastian |
Re: Zählen wie oft eine Form aufgerufen worden ist
Hm hoi,
sieht gut aus nur wie lässt man das in einem label anzeigen? denn Label1.Caption := Form2.Tag := Form2.Tag + 1; kann ja nich funzen mfg |
Re: Zählen wie oft eine Form aufgerufen worden ist
label1.caption:= inttostr(form2.tag)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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