AGB  ·  Datenschutz  ·  Impressum  







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

Komponenteneigenschaften gehen verloren

Ein Thema von Mojito · begonnen am 1. Nov 2012 · letzter Beitrag vom 1. Nov 2012
Antwort Antwort
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#1

Komponenteneigenschaften gehen verloren

  Alt 1. Nov 2012, 22:54
Hallo liebe Delphi-Freunde,

ich möchte das die letzten Werte von den Variablen des Typs TRadioGroup(Indexwert) und TSpinButton(Zaehlung) bei dem Drücken auf Cancel beibehalten werden. Also die letzten Werte die eingegeben wurden worden, wenn auf OK gedrückt wurde sollen bei erneutem Aufruf des Formulars vorausgewählt sein. Leider ist das nicht der Fall und es werden willkürlich andere Zahlen angegeben. Was mag ich übersehen haben?
Vielen Dank euch!

Delphi-Quellcode:
function Formular1.starting:boolean;
var Indexwert, Zaehlung:byte;
begin
Zaehlung:=SpnEdtCount.Value;
Indexwert:=RdGrpOperator.ItemIndex;

case ShowModal of

mrOk:
begin
if not (SpnEdtCount.Value > 5) and (RdGrpOperator.ItemIndex <> -1) then
   starting := FALSE
else
   starting := TRUE;
end;

mrCancel:
begin
SpnEdtCount.Value:=Indexwert;
RdGrpOperator.ItemIndex:=Zaehlung;
starting := FALSE;
      end;
end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Komponenteneigenschaften gehen verloren

  Alt 1. Nov 2012, 23:34
Zuerst einmal hilft es immer ungemein, den Code richtig zu formatieren:
Delphi-Quellcode:
function Formular1.starting : boolean;
var
  Indexwert, Zaehlung : byte;
begin
  Zaehlung := SpnEdtCount.Value;
  Indexwert := RdGrpOperator.ItemIndex;

  case ShowModal of

    mrOk :
      begin
        if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
        then
          starting := FALSE
        else
          starting := True;
      end;

    mrCancel :
      begin
        SpnEdtCount.Value := Indexwert;
        RdGrpOperator.ItemIndex := Zaehlung;
        starting := FALSE;
      end;
  end;
end;
Und schon sieht man etwas klarer ... und ich hätte folgende Fragen:
  1. Warum haben Indexwert und Zaehlung den Typen Byte ? Damit kannst du nur Werte von 0..255 speichern. Reicht das wirklich aus?
    Interessant wird es, wenn du z.B. den Wert 256 zuweist, daraus wird dann 0
  2. Der Wert von SpnEdtCount.Value wird in Zaehlung gespeichert und RdGrpOperator.ItemIndex in Indexwert - ok
    Bei Cancel werden diese gespeicherten Werte aber "verdreht" zurückgeschrieben ... ist das so gewünscht?

EDIT: Kleiner Optimierungstip:

Statt
Delphi-Quellcode:
    mrOk :
      begin
        if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
        then
          starting := FALSE
        else
          starting := True;
      end;
einfach
Delphi-Quellcode:
    mrOk :
      starting := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );
das hilft auch den Code besser zu verstehen

EDIT2:

Ich habe jetzt erst bemerkt, dass starting ja der Funktionsname ist und somit in deinem Code der Rückgabewert ist.
Für das bessere Codeverständnis wäre es ratsam statt den Funktionsnamen Result zu verwenden. Dann ist jedem auf den ersten Blick klar, dass hier der Rückgabewert der Funktion gemeint ist.
Delphi-Quellcode:
    mrOk :
      Result := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 1. Nov 2012 um 23:43 Uhr)
  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 20: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