Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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/)
-   -   Merkwürdiger Effekt bei TLabel (https://www.delphipraxis.net/204149-merkwuerdiger-effekt-bei-tlabel.html)

Willie1 29. Apr 2020 14:53


Merkwürdiger Effekt bei TLabel
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Leute,
ich habe mein Hobbyprojekt Kniffel fast abgeschlossen. Auf dem Hauptfenster befinden sich zahlreiche Labels, eine Radio Group, 4 Buttons und noch ein paar andere Steuerelemente, nichts besonderes. Zum Schluss habe ich unten noch ein großes Label eingefügt mit dem Inhalt: Peter, du bist dran, damit klar ist, wer würfeln muss (soll sich natürlich zur Laufzeit ändern). Alle Label haben individuelle Namen, das letzte Label heißt zunächst Label1. Jetzt fällt mir auf, egal ob ich Caption im Objekt Inspektor verändere oder zur Laufzeit, es steht immer nur 1 da. Bei einem zweiten Label2 2 und s.w. 3. Seht euch die Screenshots an, im Quelltext kommt Label1,2 und 3 nur in der Deklaration vor sonst nicht.
Was zum Teufel ist da los?
Gruß Willie.

DieDolly 29. Apr 2020 14:55

AW: Merkwürdiger Effekt bei TLabel
 
Zitat:

Seht euch die Screenshots an
Welche Screenshots? ;) Ich sehe da (noch) keine.

Delphi.Narium 29. Apr 2020 15:08

AW: Merkwürdiger Effekt bei TLabel
 
Screenshot hin, Screenshot her.

Dadrin kann man nur ein Ergebnis sehen, aber hat keine Chance irgendwas sinnvolles bezüglich der Ursache zu sagen.

Caption von TLabel wird entweder im Objektinspektor gesetzt oder zur Laufzeit.

Man müsste, wenn im Objektinspektor was sinnvolles in Caption steht, aber zur Laufzeit was anderes, im Quelltext nachschauen, ob Caption ein Wert zugewiesen wird und ggfls. welcher.

Ohne Quelltext und Formular ist es annähern aussichtslos, hier irgendeine, wenn auch nur ansatzweise, sinnvolle Hilfestellung zu geben, geschweige denn die Ursache zu finden.

Heimlich 29. Apr 2020 15:25

AW: Merkwürdiger Effekt bei TLabel
 
Benenne Label1, Label2 und Label3 um, sprich, gib ihnen sprechende Namen. Beim Compilieren solltest Du dann merken, wo der Fehler ist.

Willie1 29. Apr 2020 15:30

AW: Merkwürdiger Effekt bei TLabel
 
Bevor ich mich hier melde, überprüfe ich alles sehr sorgfältig. Im Quelltext kommt Label1,2,3 NUR in der Deklaration vor, ich hab's mit der Suchfunktion überprüft. Wieso steht da 1,2 und 3, es müsste doch Label1 2 und 3 stehen.
Delphi-Quellcode:
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    M_Datei: TMenuItem;
    M_NeuesSpiel: TMenuItem;
    M_Oeffnen: TMenuItem;
    M_Speichern: TMenuItem;
    M_Beenden: TMenuItem;
    M_Einstellungen: TMenuItem;
    M_Setup: TMenuItem;
    M_Spiel: TMenuItem;
    M_WeiteresSpiel: TMenuItem;
    M_Spielstand: TMenuItem;
    N3: TMenuItem;
    M_Rundeabb: TMenuItem;
    M_Hilfe: TMenuItem;
    M_Programmerkl: TMenuItem;
    M_Dank: TMenuItem;
    N2: TMenuItem;
    M_Ueber: TMenuItem;
    N1: TMenuItem;

    StatusBar: TStatusBar;
    KniffelRahmen: TBevel;
    lblWueSpieler: TLabel;
    lblWuerfelInfo: TLabel;
    lblAuswRunde: TLabel;
    lblAuswName: TLabel;
    lblKniffelKarteRunde: TLabel;
    Rahmen3: TBevel;
    lblW1: TLabel;
    lblW2: TLabel;
    lblW3: TLabel;
    lblW4: TLabel;
    lblW5: TLabel;
    NeuBox1: TCheckBox;
    NeuBox2: TCheckBox;
    NeuBox3: TCheckBox;
    NeuBox4: TCheckBox;
    NeuBox5: TCheckBox;
    lblEiner: TLabel;
    lblZweier: TLabel;
    lblDreier: TLabel;
    lblVierer: TLabel;
    lblFuenfer: TLabel;
    lblSechser: TLabel;
    lblBonus: TLabel;
    lblZwiErgebnis: TLabel;
    lblDreierpasch: TLabel;
    lblViererpasch: TLabel;
    lblFullHouse: TLabel;
    lblKlStrasse: TLabel;
    lblGrStrasse: TLabel;
    lblChance: TLabel;
    lblKniffel: TLabel;
    lblGesamtErgeb: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    lblKniffelKarteUeb: TLabel;
    lblWueAuswUeb: TLabel;
    lbl_2: TLabel;
    lbl_1: TLabel;
    lbl_3: TLabel;
    lbl_4: TLabel;
    lbl_5: TLabel;
    lbl_6: TLabel;
    lblBonusZahl: TLabel;
    lblZwiErgebZahl: TLabel;
    lbl_7: TLabel;
    lbl_8: TLabel;
    lbl_9: TLabel;
    lbl_10: TLabel;
    lbl_11: TLabel;
    lbl_13: TLabel;
    lbl_12: TLabel;
    lblGesErgebZahl: TLabel;
    Bevel3: TBevel;
    lblAuswahlUeb: TLabel;
    lblEiner2: TLabel;
    lblZweier2: TLabel;
    lblDreier2: TLabel;
    lblVierer2: TLabel;
    lblFuenfer2: TLabel;
    lblSechser2: TLabel;
    lblDreierpasch2: TLabel;
    lblViererpasch2: TLabel;
    lblFullHouse2: TLabel;
    lblKlStrasse2: TLabel;
    lblGrStrasse2: TLabel;
    lblChance2: TLabel;
    lblKniffel2: TLabel;
    GroupBox1: TGroupBox;
    rbtn_1: TRadioButton;
    rbtn_A1: TRadioButton;
    rbtn_2: TRadioButton;
    rbtn_A2: TRadioButton;
    rbtn_3: TRadioButton;
    rbtn_A3: TRadioButton;
    rbtn_4: TRadioButton;
    rbtn_A4: TRadioButton;
    rbtn_5: TRadioButton;
    rbtn_A5: TRadioButton;
    rbtn_6: TRadioButton;
    rbtn_A6: TRadioButton;
    rbtn_7: TRadioButton;
    rbtn_A7: TRadioButton;
    rbtn_8: TRadioButton;
    rbtn_A8: TRadioButton;
    rbtn_9: TRadioButton;
    rbtn_A9: TRadioButton;
    rbtn_10: TRadioButton;
    rbtn_A10: TRadioButton;
    rbtn_11: TRadioButton;
    rBtn_A11: TRadioButton;
    rbtn_12: TRadioButton;
    rbtn_A12: TRadioButton;
    rbtn_13: TRadioButton;
    rbtn_A13: TRadioButton;
    lblWuePkt: TLabel;
    lblErkl1: TLabel;
    lblErkl2: TLabel;
    Wuerfel1: TDice;
    Wuerfel2: TDice;
    Wuerfel3: TDice;
    Wuerfel4: TDice;
    Wuerfel5: TDice;
    Bevel4: TBevel;
    lblZwischenstUeb: TLabel;
    lblName_1: TLabel;
    lblName_2: TLabel;
    lblName_3: TLabel;
    lblName_4: TLabel;
    lblName_5: TLabel;
    lblName_6: TLabel;
    lblSpieStand_1: TLabel;
    lblSpieStand_2: TLabel;
    lblSpieStand_3: TLabel;
    lblSpieStand_4: TLabel;
    lblSpieStand_5: TLabel;
    lblSpieStand_6: TLabel;
    Bevel5: TBevel;
    Bevel6: TBevel;
    AnimateWue: TAnimate;
    SaveDialog: TSaveDialog;
    OpenDialog: TOpenDialog;
    lblKniffelKarteName: TLabel;
    SpielGauge: TGauge;
    lblFortschr: TLabel;
    ImageList1: TImageList;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    AboutBox21: TAboutBox2;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Button2: TButton;
    BitBtn2: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
Zitat:

Caption von TLabel wird entweder im Objektinspektor gesetzt oder zur Laufzeit.
Ich wiederhole nochmal im Quelltext wird Label1.Caption nicht verändert.

himitsu 29. Apr 2020 15:58

AW: Merkwürdiger Effekt bei TLabel
 
Im Grunde würde ich auch wetten, dass es etwas in deinem eigenen Code ist, aber wenn es unbedingt sein muß...

Delphi-Quellcode:
type
  TLabel = class(StdCtrls.TLabel)
  protected
    // einfacher/schöner zu Debuggen wäre es gewesen SetCaption aka SetText/SetTextBuff zu überschreiben,
    // aber das geht nicht, drum hier über WM_SETTEXT bzw. CM_TEXTCHANGED.
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
  end;

  TMainForm = class(TForm)
  ...
  end;
 
implementation

procedure TLabel.CMTextChanged(var Message: TMessage);
begin
  Beep; <<<< hier ein Haltepunkt hin und dann im Stacktrace/Debugger schauen wo es her kommt, bzw. wohin es zurück geht
  inherited;
end;

Medium 29. Apr 2020 16:16

AW: Merkwürdiger Effekt bei TLabel
 
Evtl. irgendwo ein with...do eingesetzt, dass unerwartet die Caption vom Label erwischt?

Delphi.Narium 29. Apr 2020 16:36

AW: Merkwürdiger Effekt bei TLabel
 
Zitat:

Zitat von Willie1 (Beitrag 1463145)
Ich wiederhole nochmal im Quelltext wird Label1.Caption nicht verändert.

Ohne den vollständigen Quelltext sehe ich keine Chance, sinnvolle Hilfestellung zu geben.

Wird irgendwo im Programm die Caption von irgendwelchen anderen TLabels (in 'ner Schleife) geändert und Label1 bis Label3 werden dabei (unbeabsichtigt) mit verändert?

bcvs 29. Apr 2020 16:50

AW: Merkwürdiger Effekt bei TLabel
 
Such mal im Quelltext nach Caption.

himitsu 29. Apr 2020 16:55

AW: Merkwürdiger Effekt bei TLabel
 
Zitat:

Zitat von bcvs (Beitrag 1463155)
Such mal im Quelltext nach Caption.

Und Text
und ...


Selbst mit einem falschen Cast
Delphi-Quellcode:
TEdit(x).Text := ;
kann mein den Text eines Labels umschreiben. (denn es geht intern alles über's gleiche WM_SETTEXT)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Seite 1 von 4  1 23     Letzte »    

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