AGB  ·  Datenschutz  ·  Impressum  







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

MessageDlg mit falschem Default

Ein Thema von himitsu · begonnen am 29. Jun 2018 · letzter Beitrag vom 13. Sep 2018
Antwort Antwort
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.134 Beiträge
 
Delphi 2009 Professional
 
#1

AW: MessageDlg mit falschem Default

  Alt 29. Jun 2018, 20:07
Bei D2009 ist bei der 1. und 3. Frage "Nein" ausgewählt und bei der 2. "Ja".

@Uwe: Stört hier, dass man Default überhaupt (also auch auf False) setzt?
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer (29. Jun 2018 um 20:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#2

AW: MessageDlg mit falschem Default

  Alt 1. Jul 2018, 13:36
@Uwe: Stört hier, dass man Default überhaupt (also auch auf False) setzt?
Nach dem Tipp hab ich das grade mir nochmal angesehn und die Antwort ist JA.

Es wird als Property dem Button-Item zugewiesen, aber intern wird in der Liste DefaultButton:=ButtonItem gespeichert, und bei False halt DefaultButton:=NIL.
Da ist eigentlich der Fehler in der Liste, bzw. in diesem Setter, welcher beim False nur bei OwnerList.DefaultButton=Self das NIL setzen dürfte.

Das vor Aufruf des Setters (Setzen des Property) abzufangen mag hier funktionieren, aber so ganz richtig ist diese Lösung IMHO nicht.
Delphi-Quellcode:
procedure TTaskDialogBaseButtonItem.SetDefault(const Value: Boolean);
begin
  if Value then
    TTaskDialogButtons(Collection).DefaultButton := Self
  else if TTaskDialogButtons(Collection).DefaultButton = Self then
    TTaskDialogButtons(Collection).DefaultButton := nil;
end;
Im neuen Delphi wurde der Fehler also doppelt behoben. (der Setter hätte gereicht )

Das mit dem DefaultButton in alten Delphis funktioniert somit nur, wenn es zufällig der letzte Button ist, also der mit dem höchsten Wert in TMsgDlgButtons/TMsgDlgBtn.

Meine Lösung wird wohl sein, dass ich UseLatestCommonDialogs auf False setze. (IFDEF XE ... muß am Montag nur nochmal nachsehn, dass im XE der Fehler nur im TTaskDialog liegt)


Hatten die nicht mal die Werte der Konstanten geändert? Da war doch mal was.
Ich versuche sowieso immer die Konstanten zu nehmen, so dass es hier keine Probleme gibt.
Und beim Speichern in INI/Regisrty speichere ich gern die Namen, anstatt den Werten, was selten knallt.
(außer beim FMX, wo sogar die hauseigenen DFMs abrauchten, als Emba da mehrmals die Bezeichner änderte ... alTop zu TAlignLayout.Top, ohne dass das neue Delphi beide Namen lesen kann )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Jul 2018 um 17:22 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 04:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz