AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi OnSelect von ComboBox mit Parent StringGrid wird nicht ausgelöst
Thema durchsuchen
Ansicht
Themen-Optionen

OnSelect von ComboBox mit Parent StringGrid wird nicht ausgelöst

Ein Thema von Helmi · begonnen am 17. Aug 2022 · letzter Beitrag vom 17. Aug 2022
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

OnSelect von ComboBox mit Parent StringGrid wird nicht ausgelöst

  Alt 17. Aug 2022, 16:27
Hallo Zusammen,

ich habe einen merkwürdigen Fehler entdeckt.

Ich habe ein StringGrid, in dem ich eine ComboBox anzeigen lasse (zum Auswählen von Werten in einer Zelle).
Soweit funktioniert es wie gewollt.

Von dem ComboBox nutz ich die Events OnSelect und OnExit.

Eigenartigerweise, wenn ComboBox.Parent die StringGrid ist, dann wird das Event "OnSelect" der ComboBox nicht ausgelöst.
"OnExit" aber schon.

"OnChange" wird ebenfalls nicht ausgelöst.

Ist die Form aber der Parent, dann funktioniert OnSelect.

Anbei ein Beispiel-Projekt.
Einfach in der zweiten Spalte auf die Zellen klicken und in der ComboBox etwas auswählen.

OnExit allein ist für die Anwendung aber zu spät, da ich dafür wo anders klicken müsste, anstatt nur auszuwählen.

Wie bekomm ich es nun dazu, OnSelect ausgelöst zu bekommen?
Angehängte Dateien
Dateityp: rar _TEST.rar (1,70 MB, 3x aufgerufen)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: OnSelect von ComboBox mit Parent StringGrid wird nicht ausgelöst

  Alt 17. Aug 2022, 17:02
Das liegt an TCustomGrid.WMCommand, das versäumt ein inherited aufzurufen, wenn es mit dem NotifyCode nichts anfangen kann.

Abhilfe kann z.B. eine Interposer Klasse für TStringGrid liefern, die das entsprechend umsetzt, ist aber unschön.

Etwas aufwändiger, aber weniger invasiv: Zwischen ComboBox und StringGrid ein TPanel als Parent legen. Hier das Prinzip:
Delphi-Quellcode:
  ComboBox_aktiv := TComboBox.Create(self);

  var panel := TPanel.Create(Self);
  panel.BevelOuter := bvNone;
  panel.AutoSize := True;
  panel.Parent := StringGrid1;
  with ComboBox_aktiv do
    begin
      Parent := panel;
// Parent := Form5;

      Style := csDropDownList;
      Visible := false;

      Items.Add('aus');
      Items.Add('ein');

      OnSelect := ComboBox_OnSelect;
      OnExit := ComboBox_OnExit;
    end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#3

AW: OnSelect von ComboBox mit Parent StringGrid wird nicht ausgelöst

  Alt 17. Aug 2022, 18:47
Danke für den Tipp mit dem Panel.

Hab das jetzt mal im Testprojekt eingepflegt und es funktioniert wunderbar.
War aber nicht wirklich aufwändig, man muss nur an ein paar Stellen ändern.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 12:00 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