Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Exception beim ausblenden von Labels auf einem Tabsheet (https://www.delphipraxis.net/99971-exception-beim-ausblenden-von-labels-auf-einem-tabsheet.html)

DelphiManiac 20. Sep 2007 09:31


Exception beim ausblenden von Labels auf einem Tabsheet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ich habe folgendes Problem, und ich weiss nicht wie ich es lösen soll:

Ich habe eine Anwendung die mehrere Tabsheets beinhaltet, diese sind ohne Passwort ersteinmal
disabled. Dazu habe ich ein Label 'Gesperrt' auf dem Tabsheet liegen.

Also folgender Fall:

die Tabsheets werden freigegeben und die Labels werden ausgeblendet. Genau da tritt eine Exception auf...

folgender Quellcode:

Delphi-Quellcode:
(*******************************************************************************
  Wechsel vom Worker in den ReadOnly Mode und umgekehrt
  --> shouldLock = true
      --> ReadOnly aktiv
  --> shouldLock = false
      --> Worker aktiv
*******************************************************************************)
procedure TfrmMain.LockTabs(shouldLock: Boolean);
// Sperrt oder Entsperrt den Zugriff auf die Tabs
begin
  try
    tabGeraeteDaten.Enabled  := NOT(shouldLock);
    tabKalibrierung.Enabled  := NOT(shouldLock);
    tabAnalogAusgang.Enabled := NOT(shouldLock);
    tabExcel.Enabled         := NOT(shouldLock);
    tabSonstiges.Enabled     := NOT(shouldLock);
    lblGesperrt1.Visible     := shouldLock;
    lblGesperrt2.Visible     := shouldLock;
    lblGesperrt3.Visible     := shouldLock;
    lblGesperrt5.Visible     := shouldLock;
    lblGesperrt7.Visible     := shouldLock;
    if tabDatalogging.Visible then
    begin
      lblGesperrt6.Visible     := shouldLock;
    end;
  except
    ShowMessage('Fehler beim Freischalten der Anwendung');
  end;
end; // of procedure TFrmMain.LockTabs(shouldLock: Boolean);
////////////////////////////////////////////////////////////////////////////////
Ich habe einen Backgroundtask am Laufen, der Daten von der Schnittstelle holt und diese auch selbst über Synchronize an die Labels der Tabsheets weitergibt, könnte dort das Problem liegen?
EDIT1: Tritt aber auch ohne Backgroundtask auf (Exception im Anhang)
Irgendwie weiß ich nicht wo genau dort das Problem liegt??

Danke schonmal

Gruß
DelphiManiac

semo 20. Sep 2007 09:51

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
welche art von exception?

versuch mal
Delphi-Quellcode:
except
  on e: exception do
  begin
    ShowMessage('an error occured: ' + e.Message);
  end;
end;

Nuclear-Ping 20. Sep 2007 09:53

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
Kann mir kaum vorstellen, dass das durch das Ein- / Ausblenden der Labels ausgelöst wird.

Hast du die Funktion mal mit einem Breakpoint angehalten und bist sie durchgesteppt (F8)?

alzaimar 20. Sep 2007 09:57

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
Lesen von Adresse 0x000000123 deutet eigentlich auf den Versuch hin, ein Feld eines nicht instantiierten Objektes anzusprechen.

DelphiManiac 20. Sep 2007 10:01

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
Es scheint aber wirklich die labels zu betreffen...

wenn ich die auskommentiere habe ich kein Problem.

Es tritt ja auch nicht immer auf...

ich guck mir jetzt mal label für label an...

DelphiManiac 20. Sep 2007 10:24

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
@alzaimar:

Ja da hast du vollkommen Recht, jetzt habe ich auch die Ursache gefunden.
es lag an lbl2Geperrt, dieses lag auf einem JVPanel, den ich dynamisch zur Laufzeit mit
Controlls füttere und diese auch beim OnShow des Tabsheets wieder lösche und neu erzeuge.
Also habe ich mir anscheinend hier mein Label selbst gelöscht ..aaargh (Asche auf mein Haupt..)

Delphi-Quellcode:
(*******************************************************************************
  Prozedur zum Löschen des Panels "PanelKalibrierung"
    --> Jedes Control wird gelöscht [Control = hier eine Kanalansicht], bis
        es keine Controls mehr auf dem Panel gibt
*******************************************************************************)
procedure TfrmMain.LoescheKanalAnsicht;
var i : Integer;
    buffer : TControl;
begin
  if self.PanelKalibrierung.ControlCount > 0 then
  begin
    for i := self.PanelKalibrierung.ControlCount - 1 downto 0 do
    begin
      buffer := self.PanelKalibrierung.Controls[i];
      self.PanelKalibrierung.RemoveControl(self.PanelKalibrierung.Controls[i]);
      buffer.Free;
    end; // for i := self.PanelControls.ControlCount - 1 downto 0
  end; // if self.PanelControls.ControlCount > 0
end; // of procedure TFrmMain.reset;
////////////////////////////////////////////////////////////////////////////////
Ein Label wird doch auch von TControl abgeleitet, oder?

Gruß und dank an alle

Ich habe das Label jetzt vom Panel genommen..

s-off 20. Sep 2007 10:34

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
Zitat:

Zitat von DelphiManiac
Ein Label wird doch auch von TControl abgeleitet, oder?

Ja:
TLabel <- TCustomLabel <- TGraphicControl <- TControl

DelphiManiac 20. Sep 2007 15:15

Re: Exception beim ausblenden von Labels auf einem Tabsheet
 
Ok,

manchmal sieht man die TLabels (Bäume) vor lauter TControls (Wald) nicht :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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