AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Deaktivieren von Controls in VCL Frame klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Deaktivieren von Controls in VCL Frame klappt nicht

Ein Thema von TurboMagic · begonnen am 18. Mai 2023 · letzter Beitrag vom 18. Mai 2023
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.827 Beiträge
 
Delphi 12 Athens
 
#1

Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 16:33
Hallo,

gegeben ist eine VCL Form mit einem Frame darin.
Das Frame wurde zur Entwurfszeit in die Form gesteckt.
Im Constructor der Form ist seit eben Code drin, der unter bestimmten
Umständen (die auch zutreffen, der Debuger sagt das auch!) die
Steuerelemente des Frames deaktivieren soll.

Nur: die Steuerelemente bleiben trotz Enabled := false oder ReadOnly := true
anklickbar oder editierbar.

Setze ich Enabled des Frame auf false ist alles deaktiviert, aber vom Zustand
so dargestellt, als wäre es aktiv. Ist also nicht die wirklich richtige Lösung...

Woran kann das liegen?

Grüße
TurboMagic
  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: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 16:48
Woran kann das liegen?
Vermutlich an dem Code, den wir hier nicht sehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.827 Beiträge
 
Delphi 12 Athens
 
#3

AW: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 17:00
Ok, hier etwas Code:

Delphi-Quellcode:
constructor Tf_MyForm.Create(AOwner : TComponent;
                             SomeData : ISomeData;
                             SomeThingy : ISomeThingy;
                             ThingName : string;
                             OnThingNameChanged : TOnThingNameChange;
                             ReadOnly : Boolean);
begin
  inherited Create(AOwner);

  FSomeData := SomeData;
  FThingName := ThingName;
  FOnThingNameChanged := OnThingNameChanged;
  FThingNameChanged := false;

  frm_MyFrame.Init(FSomeData,
                   SomeThingy,
                   ThingName,
                   OnChangeButtonEnableState,
                   OnThingNameChanged,
                   true);

  if ReadOnly then
  begin
    frm_MyFrame.nb_Port.ReadOnly := true;
    frm_MyFrame.tf_URL.ReadOnly := true;
    frm_MyFrame.b_Test.Enabled := false;
    frm_MyFrame.b_Default.Enabled := false;
    b_OK.Enabled := false;
    // Workaround: unschön, aber deaktiviert wenigstens alles
    frm_MyFrame.Enabled := false;
  end;
end;
Und nein, auf frm_MyFrame wird in Tf_MyForm nirgends mehr zugegriffen.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#4

AW: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 17:10
Ich vermute, das ist einfach die falsche Stelle.
Versuchs mal im Loaded der Form.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  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
 
#5

AW: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 17:35
@Thomas: Eigentlich ist das Form nach dem inherited Create bereits vollständig geladen. Andernfalls wäre der Zugriff auf das Frame selbst auch ziemlich fragil.

@Markus: Kannst du das an einem simplen Beispiel reproduzieren?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#6

AW: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 17:40
@Thomas: Eigentlich ist das Form nach dem inherited Create bereits vollständig geladen. Andernfalls wäre der Zugriff auf das Frame selbst auch ziemlich fragil.
Stimmt, ich habe nicht genau hingeguckt. Ich wähnte mich im OnCreate der Form
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  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
 
#7

AW: Deaktivieren von Controls in VCL Frame klappt nicht

  Alt 18. Mai 2023, 17:46
Das OnCreate wird seit geraumer Zeit erst im AfterContruction ausgeführt, also definitiv nach dem Create.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:19 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