AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TForm mit BorderStyle=bsNone Frage

Ein Thema von RWarnecke · begonnen am 7. Feb 2012 · letzter Beitrag vom 8. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 21:46
Hallo zusammen,

ich habe auf einer Form eine Listview und eine Auswahlliste. Wenn ich in der Listview auf einen Eintrag einen Doppelklick ausführe, wird eine zweite Form mit der Eigenschaft BorderStyle=bsNone erstellt und über die Listview gelegt. Ich benutze die TForm sozusagen als eine Art Frame. Über einen Button kann ich die erstellte Form, die über der Listview liegt wieder schliessen. Wenn ich jetzt in der Auswahlliste, die zusätzlich zur Listview oder zur erstellten Form angezeigt wird, einen Eintrag auswähle, soll sich der Inhalt der Listview ändern. Bis hier funktioniert alles wunderbar.

Jetzt zu meinem Problem :
Wenn nicht die Listview zu sehen ist, sondern die erstellte Form, soll diese vorher geschlossen werden und dann die Listview wieder angezeigt werden. Ich habe das ganze versucht über die Eigenschaft Showing der erstellten Form abzufangen. Nur leider wird diese Eigenschaft auch dann True gesetzt, wenn die erstellte Form über die Procedure Close geschlossen wird.

Also kommt meines Erachtens die Eigenschaft Showing nicht in Frage. Wie könnte ich es trotzdem realisieren, dass die erstellte Form erst geschlossen wird und dann der neue Inhalt der Listview entsprechend dem Eintrag in der Auswahlliste angezeigt wird ? Ein Wechsel zwischen den einzelen Einträgen der Auswahlliste sollte immer Funktionieren.

Gruß
Rolf
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#2

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 22:26
Ich bin nicht sicher, ob ich dich richtig verstanden habe, aber was spricht gegen Form.Visible ?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 22:28
Die Frage wäre warum mußt du die Borderlose Form schließen reicht hier nicht ein Hide?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#4

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 22:31
Die Frage wäre warum mußt du die Borderlose Form schließen reicht hier nicht ein Hide?
Delphi-Quellcode:
procedure TCustomForm.Hide;
begin
  Visible := False;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 22:38
Die Frage wäre warum mußt du die Borderlose Form schließen reicht hier nicht ein Hide?
Delphi-Quellcode:
procedure TCustomForm.Hide;
begin
  Visible := False;
end;
Lieber Uwe schon klar..
mein Problem dabei du hast ein paar Minuten vor mir gepostet so konnte ich deinen Beitrag erst nachher sehn

gruss
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 23:09
Hallo Ihr beiden,

danke erstmal für Eure Antworten. Ich weiß nicht, ob es eine entscheidene Rolle spielt, aber ich setzte den BorderStyle erst zur Laufzeit. Wenn ich euch richtig verstanden habe, dann soll ich die Forms, die im Moment durch einen Doppelklick auf einen ListView-Eintrag erstellt werden, beim Starten des Programms erstellen oder ? Damit ich dann später nur noch mit Hide und Show/ShowModal die Forms anzeigen oder verschwinden lassen kann ?

Edit: Hier noch ein Sourcecodeteil wie ich erstelle :
Delphi-Quellcode:
BillingDetails := TCreateBillingForm.Create(Self);
BillingDetails.Parent := Self;
BillingDetails.BorderStyle := bsNone;
for I := 0 to BillingDetails.ComponentCount - 1 do
  if (BillingDetails.Components[i] is TAdvEdit) then
    TAdvEdit(BillingDetails.Components[i]).ReadOnly := True;
{...}
BillingDetails.Show;
Dieser Teil wird in meiner MainForm des Programms ausgeführt, wenn auf einen Eintrag in der ListView ein Doppelklick ausgeführt wird.
Rolf Warnecke
App4Mission

Geändert von RWarnecke ( 7. Feb 2012 um 23:12 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 23:21
Zitat:
Damit ich dann später nur noch mit Hide und Show/ShowModal die Forms anzeigen oder verschwinden lassen kann ?
So war das gedacht.

Ich Händle das mit meinen nonvcl Windows genau so.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 23:24
Wenn ich aber nur Hide und Show/ShowModal benutze, habe ich ja immer noch die ganzen Eingaben in der Form stehen. Das heißt also, Du löscht dann prinzpell alles beim Verstecken oder vor dem Anzeigen wieder ? Wenn ja, ist das nicht etwas umständlich ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: TForm mit BorderStyle=bsNone Frage

  Alt 7. Feb 2012, 23:29
Wenn ich aber nur Hide und Show/ShowModal benutze, habe ich ja immer noch die ganzen Eingaben in der Form stehen. Das heißt also, Du löscht dann prinzpell alles beim Verstecken oder vor dem Anzeigen wieder ? Wenn ja, ist das nicht etwas umständlich ?
Ich weiss nicht was da in der Form drin steht.
Aber in dem du die Form schließt löschst du doch quasi auch alles oder?

Blick nicht so recht da durch was du auf die Form setzen willst zu Laufzeit.
Wenn es gedruckte Texte sind reicht ein einfaches refresh bei Hide oder?
Dafür muss ich die Form nicht immer und immer wieder neuladen.

Wenn du das TAdvEdit aufsetzt brauchst du bei hide doch nur die einträge löschen.
Ohne die Komponente immer wieder neu zu laden.

gruss

Geändert von EWeiss ( 7. Feb 2012 um 23:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#10

AW: TForm mit BorderStyle=bsNone Frage

  Alt 8. Feb 2012, 07:57
Wenn ich aber nur Hide und Show/ShowModal benutze, habe ich ja immer noch die ganzen Eingaben in der Form stehen. Das heißt also, Du löscht dann prinzpell alles beim Verstecken oder vor dem Anzeigen wieder ? Wenn ja, ist das nicht etwas umständlich ?
Sehe ich das richtig, daß du bei jedem Doppelclick in den ListView eine neue Instanz für BillingDetails erstellst? Dann stellt sich die Frage, an welcher Stelle eine etwaige vorherige Instanz freigegeben wird. Wenn du keine besonderen Vorkehrungen getroffen hast, wird das Form bei einem Close eigentlich auch nur versteckt und nicht freigegeben. Wenn du dann beim nächsten Doppelclick eine neue Instanz erzeugst und BillingDetails zuweist, bleibt das vorherige Form noch existent und wird erst bei Freigabe des MainsForms aus dem Speicher entfernt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz