| Autor |
Beitrag |
Public Enemy
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Mo 25.08.08 17:54
Hallo zusammen,
mein Problem ist folgendes und zwar mache ich ein Programm in dem es ein Button geben soll der 2 Aktionen durchführen soll. Also beim ersten mal drauf klicken soll alles (Buttons, Zeichenfelder) andere drumherum verschwinden und beim wiederholten male alles wieder sichtbar sein.
Zum verstecken der Objekte benutze ich ganz einfach
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.VersteckeGeklickt(Sender: TObject); begin
Knopf_Beenden.verstecke; Knopf_Berechnen.verstecke;
end; |
Wie man sie sichtbar machen würde mit einem zweiten Button wüsste ich. Aber nicht wie es geht wenn man zum wiederholten male auf einen drückt.
Hoffe ihr könnt mir helfen.
Gruß PE
|
|
Mike19
      
Beiträge: 256
Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
|
Verfasst: Mo 25.08.08 17:59
Hallo,
teste doch einfach bei click, wie der Zustand der Felder ist (Visible False oder True). Danach kanns Du festlegen, wass geschehen soll.
Micha
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Mo 25.08.08 18:11
Knopf.verstecken gibt es normal ja nicht - entweder ist es Pseudocode oder du hast den Button abgeleitet. Egal, ich gehe mal davon aus dass der Button trotzdem eine Eigenschaft .visible hat:
Delphi-Quelltext 1:
| knopf.visible := not knopf.visible; |
Damit wird der Knopf abwechseln Sichtbar und unscihtbar gemacht, immer das Gegenteil von dem was er schon ist.
Allgemeiner würde es mit ner Zählvariable für die Zustände gehen, damit könnte man dann auch mehr als 2 Zustände unterscheiden.
Grüße,
tilman
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Zuletzt bearbeitet von Tilman am Di 26.08.08 16:37, insgesamt 1-mal bearbeitet
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Mo 25.08.08 19:24
Tilman hat folgendes geschrieben: | Knopf.verstecken gibt es normal ja nicht - entweder ist es Pseodocode oder du hast den Button abgeleitet. Egal, ich gehe mal davon aus dass der Button trotzdem eine Eigenschaft .visible hat:
Delphi-Quelltext 1:
| knopf.visible := not knopf.visible; |
Damit wird der Knopf abwechseln Sichtbar und unscihtbar gemacht, immer das Gegenteil von dem was er schon ist.
Allgemeiner würde es mit ner Zählvariable für die Zustände gehen, damit könnte man dann auch mehr als 2 Zustände unterscheiden.
Grüße,
tilman |
Danke für eure antworten.
Deine hat mir nun geholfen. Vielen Danke nochmal für eurer schnelle Hilfe. Bin noch ziemlich am Anfang mit Delphi daher kann es auch sein, dass ich mich nicht richtig ausdrücke.
Bin also natürlich offen für alle anderen Möglichkeiten bzw. Verbesserung meiner Fragestellung.
Ach ja und noch ne Frage ist es Möglich wenn mein Button von vornherein Verstecke heißt und ich drauf klick dort steht Anzeige?
Gruß PE
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 25.08.08 19:38
Moin und  im Forum!
Public Enemy hat folgendes geschrieben: | | Bin also natürlich offen für alle anderen Möglichkeiten bzw. Verbesserung meiner Fragestellung. |
Wir haben auch einen FAQ-Eintrag zu diesem Problem (Beispiel B).
//EDIT:
Public Enemy hat folgendes geschrieben: | | Ach ja und noch ne Frage ist es Möglich wenn mein Button von vornherein Verstecke heißt und ich drauf klick dort steht Anzeige? |
Normalerweise gilt hier: Pro Thread nur eine Frage. Aber da du neu bist, machen wir mal eine Ausnahme:
Klar geht das, einfach mit Delphi-Quelltext 1:
| Button1.Caption := 'Neuer Titel des Buttons'; | den Titel ändern.
cu
Narses
//EDIT: Link korrigiert (er mochte die Zahl nicht)
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Mo 25.08.08 20:18, insgesamt 1-mal bearbeitet
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 25.08.08 19:44
Hi,
Ich hole mal meine Glaskugel raus. Vermutlich handelt es sich um ein Schulprojekt; ich durfte heute die kaputtgeänderte VCL-Umgebung an unseren Schulrechnern testen. Und dort haben die die Klassen auch abgeleitet und alles ins deutsche übersetzt, und die Komponenten dort haben meine ich diese Methode.
Imho absoluter blödsinn - zumal dann im Zentralabi wieder die englischen Begriffe gefragt sind. Auf den Lehrplänen steht aber erstmal: Kann keiner Englisch -> eindeutschen
gut, genug OT: Wenn ich dich richtig verstanden habe, 'tauschst' du im Moment die Buttons, hast also ständig einen visible und einen hidden.
Auch zu deinem Edit: Imho wäre es performanter, wenn du den Button umbenennst und die Methode auswechselst: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click1(Sender: TObject); begin Button1.Caption := 'Verstecken'; Button1.OnClick := Button1Click2; end;
procedure TForm1.Button1Click2(Sender: TObject); begin Button1.Caption := 'Ausklappen'; Button1.OnClick := Button1Click1; end; |
Zu deinem Edit: die Eigenschaft 'Caption' enthält die Aufschrift des Buttons
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Mo 25.08.08 20:04
Okay Sry wegen den 2 Frage in diesen Thread werde ich mir merken für das nächste mal
Und ja es handelt sich um ein Schulprojekt.Glaube ist auch erstmal uninteressant was es ist für meine Fragen (glaube ich?? Ja müsste  )
Das zu den Buttons es geht darum Das der eine Button immer sichtbar ist und dises wird genutzt um alles andere drumherum zu verstecken und wieder sichtbar zu machen. Aber diese Pro ist ja gelöst.
Natürlich verstehe ich nicht wie es hiermit geht
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click1(Sender: TObject); begin Button1.Caption := 'Verstecken'; Button1.OnClick := Button1Click2; end;
procedure TForm1.Button1Click2(Sender: TObject); begin Button1.Caption := 'Ausklappen'; Button1.OnClick := Button1Click1; end; |
Ich möchte dir mal meinen ganzen Code zeigen.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| unit mForm_fibfak;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mEtikett, mTextfeld, mKnopf, mZeilenbereich, mZeichenbereich;
type TForm1 = class(TForm) Knopf_Fibonacci: TKnopf; Knopf_Fakultaet: TKnopf; Knopf_Loeschen: TKnopf; Knopf_Verstecken: TKnopf; Knopf_Beenden: TKnopf; Textfeld_Eingabe: TTextfeld; Etikett_Eingabefeld: TEtikett; Zeichenbereich_Boom: TZeichenbereich; Zeilenbereich_Bam: TZeilenbereich; procedure Knopf_Beendengegklickt(Sender: TObject); procedure Knopf_VersteckenGeklickt(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Knopf_Beendengegklickt(Sender: TObject); begin self.close; end;
procedure TForm1.Knopf_VersteckenGeklickt(Sender: TObject); begin
Etikett_Eingabefeld.visible := not Etikett_Eingabefeld.visible; Knopf_Beenden.visible := not Knopf_Beenden.visible; Knopf_Fakultaet.visible := not Knopf_Fakultaet.visible; Knopf_Fibonacci.visible := not Knopf_Fibonacci.visible; Knopf_Loeschen.visible := not Knopf_Loeschen.visible; Textfeld_Eingabe.visible := not Textfeld_Eingabe.visible; Zeilenbereich_Bam.visible := not Zeilenbereich_Bam.visible; Zeichenbereich_Boom.visible := not Zeichenbereich_Boom.visible;
end;
end. |
Wie man sieht kann man das Programm beenden mit einem Knopfdruck und man kann Sachen verstecken und anzeigen lassen.
Das erste was ich machen würde jetzt nach deinem Post wäre es ins Englische zu packen richtig?
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 25.08.08 20:11
| Narses Link hat folgendes geschrieben: |
Allgemeiner Fehler
Not Found
Die Seite, die Du aufgerufen hast, ist auf unserem Delphi-Library.de Server nicht vorhanden.
Benutze doch einfach die Suchfunktion um eine passende Seite zu finden.
|
Sollte da wieder wer branch verlinkt haben oder so?
@2 Fragen: Imho ist das ein Konzeptänderungsvorschlag, an dem auch anderen, die dieser Thread weiterbruingen sollte, helfen dürfte.
mfG,
Moderiert von Narses: Link korrigiert
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 25.08.08 20:21
Moin!
Hidden hat folgendes geschrieben: | Sollte da wieder wer branch verlinkt haben oder so?  |
Nein nein, da hat uns Jemand inzwischen eine "Lösung" gebastelt...
Beim Link-Hint-Text darf keine weitere Zahl alleine stehen.  Habs korrigiert.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 25.08.08 22:49
wieso möchtest denn zwei buttons? nenn sie doch einfach nach dem klick um ...
PS: sollt auch in .NET gehen 
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Di 26.08.08 15:22
Grenzgaenger hat folgendes geschrieben: | wieso möchtest denn zwei buttons? nenn sie doch einfach nach dem klick um ...
PS: sollt auch in .NET gehen  |
so war es auch gedacht wenn ich draufgeklickt habe, das es den Namen ändert also den Angezeigten.
Achso ich erstelle alles unter Delphi 6.
Danke für dei obigen Beiträge mach mich sofort wieder ran 
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.08.08 21:47
tja, dann gehts doch einfach...
im onClick event einfach schreiben
Delphi-Quelltext 1:
| myButton.caption := 'myNewLabel'; |
und schon hast du es gelöst ... ggf, kannst du das mit dem tag eintrag noch koppeln ...
<HTH> GG
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Di 26.08.08 22:32
Habe das so eingetragen. Gibt auch keinen Fehler aus, aber er macht es einfach nicht wenn ich druff klicke.
Bzw. Keine Ahnung ob ich es an der richtigen Stelle eingetragen habe. Habe noch nie was von onClick event gehört xD
Denke aber dass es das ist wenn ich auf den Button doppel klicke und dann in der Prozedur bin?
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 27.08.08 13:09
Public Enemy hat folgendes geschrieben: | | Denke aber dass es das ist wenn ich auf den Button doppel klicke und dann in der Prozedur bin? |
Jap, sollte die OnClick-prozedur sein
Meine Galskugel ist leider in letzter Zeit etwas stumpf geworden, ich polier die dann später mal
Am besten ist es wohl, du hängst einmal das gesammte Projekt ohne Exe als Archiv an.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Mi 27.08.08 15:07
Hier ist der ganze Ordner ohne meine EXE.
Ich hoffe man kann dadurch schauen.
Sorry habe nicht gesehen wo es war. Es sei mir verziehen.
mfg
PE
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von Public Enemy am Mi 27.08.08 15:20, insgesamt 1-mal bearbeitet
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Mi 27.08.08 15:15
Bitte anhängen. Dazu gibt es die Option "Dateianhang hinzufügen", wenn du einen Beitrag schreibst.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 27.08.08 19:37
Hi,
Als erstes kannst du deinem Lehrer(?) mal gratulieren: Durch die Verwendung eurer übersetzten Komponenten ist der VCL-Teil inkompatibel geworden, das haben sie toll hinbekommen(!)^^. Weiß, dass das leider ziemlich verbreitet ist, denke aber mal du kannst ihn überzeugen, dass ihr englsich könnt
Punkt 1: Du erzeugst im Formcreate eine Instanz einer Klasse 'Fibo'. Diese solltest du von der Theorie her im FormDestroy auch wieder freigeben.
Punkt 2: Die von dir genannten Änderungen(Caption, das dürfte dann bei euch nirgendwie 'Aufschrift' heißen) sind in der angehängten Version nicht implementiert  . Müsste dann hier sein: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Knopf_VersteckenGeklickt(Sender: TObject); begin Etikett_Eingabefeld.visible := not Etikett_Eingabefeld.visible; Knopf_Beenden.visible := not Knopf_Beenden.visible; Knopf_Fakultaet.visible := not Knopf_Fakultaet.visible; Knopf_Fibonacci.visible := not Knopf_Fibonacci.visible; Knopf_Loeschen.visible := not Knopf_Loeschen.visible; Textfeld_Eingabe.visible := not Textfeld_Eingabe.visible; Zeilenbereich_Bam.visible := not Zeilenbereich_Bam.visible; Zeichenbereich_Boom.visible := not Zeichenbereich_Boom.visible; end; |
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Public Enemy 
      
Beiträge: 26
Win Xp und Win Vista
Delphi 6 und 7
|
Verfasst: Mi 27.08.08 19:48
Hidden hat folgendes geschrieben: | Hi,
Als erstes kannst du deinem Lehrer(?) mal gratulieren: Durch die Verwendung eurer übersetzten Komponenten ist der VCL-Teil inkompatibel geworden, das haben sie toll hinbekommen(!)^^. Weiß, dass das leider ziemlich verbreitet ist, denke aber mal du kannst ihn überzeugen, dass ihr englsich könnt
Punkt 1: Du erzeugst im Formcreate eine Instanz einer Klasse 'Fibo'. Diese solltest du von der Theorie her im FormDestroy auch wieder freigeben.
Punkt 2: Die von dir genannten Änderungen(Caption, das dürfte dann bei euch nirgendwie 'Aufschrift' heißen) sind in der angehängten Version nicht implementiert . Müsste dann hier sein: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Knopf_VersteckenGeklickt(Sender: TObject); begin Etikett_Eingabefeld.visible := not Etikett_Eingabefeld.visible; Knopf_Beenden.visible := not Knopf_Beenden.visible; Knopf_Fakultaet.visible := not Knopf_Fakultaet.visible; Knopf_Fibonacci.visible := not Knopf_Fibonacci.visible; Knopf_Loeschen.visible := not Knopf_Loeschen.visible; Textfeld_Eingabe.visible := not Textfeld_Eingabe.visible; Zeilenbereich_Bam.visible := not Zeilenbereich_Bam.visible; Zeichenbereich_Boom.visible := not Zeichenbereich_Boom.visible; end; |
mfG, |
Hmm also ihn zu überzeugen klappt wohl nicht. Kann man eben nichts dran ändern leider -.-
Also zu Punkt 1. ich verstehe nichts von dem! Ich könnte nur vermuten was gemeint ist aber diese Wörter habe ich noch nie gehört.
Punkt 2. Joar habe ich schon gesucht ob es sowas gibt. Das einzige was funzt ist wenn ich self. mach dann zeigt D mir auch cption an.
Zu dem unteren Kommentar genau es heißt bei uns Wahrheitswert. Was meinst du mit Aufschrift.
Sorry für die ganzen Umstände, aber ich komme mir gerade echt bescheuert und nichts wissend vor. 
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 27.08.08 19:56
Public Enemy hat folgendes geschrieben: | | Also zu Punkt 1. ich verstehe nichts von dem! Ich könnte nur vermuten was gemeint ist aber diese Wörter habe ich noch nie gehört. |
Schau Dir dazu am besten den entsprechenden Teil von Christians Tutorial an. 
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 27.08.08 20:15
Public Enemy hat folgendes geschrieben: | Sorry für die ganzen Umstände, aber ich komme mir gerade echt bescheuert und nichts wissend vor.  |
Sry, das war nicht meine Absicht
Wenn ich das richtig sehe(Stand Delphi 4, NRW(EG Lippstadt)) habt ihr mehrere Reiter und arbeitet im Unterricht mit einem, der 'Schule' heißt. Auf anderen Reitern befinden sich die 'normalen', englischsprachigen Komponenten. Das nur so als Randinformation, will dich hier keinesfalls animieren, dich mit deinem Lehrer über D/E-Unterricht zu streiten^^
Zu Punkt 1: Eine Klasse ist eine Datenstruktur, von der sogenannte Instanzen erzeugt werden müssen(ursprünglich eine fehlübersetzung des englischen 'instance', hat sich inzwischen eingebürgert). Für andere Datentypen wie Integer(Zahl?  ) oder Boolean wird automatisch speicher angefordert. Instanzen von Klassen musst du selbst erzeugen und freigeben(Speicher anfordern und wieder freigeben). Vergisst du die Freigabe, entstehen sogenannte 'Speicherlöcher'. Das ist Speicher, der zwar nichtmehr verwendet, aber auch nicht wieder freigeben wurde. Der Speicherverbrauch deines Programms wird dann immer größer und das ist nun wirklich unpraktisch  .
Zu Punkt 2: 'self' bezieht sich auf das ausführende Objekt(Instanz einer Klasse). In deinem Fall ist das Form1(Instanz der Klasse TForm1. Also stets die Klasse vor dem Prozedurnamen - "procedure TForm1.Knopf_VersteckenGeklickt").
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|