AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kein OnChange von TComboBox bei zuweisung von Itemindex
Thema durchsuchen
Ansicht
Themen-Optionen

Kein OnChange von TComboBox bei zuweisung von Itemindex

Ein Thema von ibp · begonnen am 5. Jan 2005 · letzter Beitrag vom 5. Jan 2005
Antwort Antwort
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 11:15
Hallo,

wenn ich bei einer TComboBox einen ItemIndex zuweise, wird kein OnChange Ereignis ausgelöst!
Wie kann ich per Code eine Auswahl treffen, wobei genau das gleiche abläuft, wie wenn ich es per Maus mache?

Delphi-Quellcode:
unit 1
...
// suche combobox und finde wert in combopbox
cbs:=TStrings.Create;
with TComboBox(fDataShow.foView.FindComponent('fld_'+inttostr(i))) do
begin
  cbs:=Items;
  for k:=0 to cbs.Count-1 do
  begin
    if pos(inzidenz[j].csvVal,cbs.Strings[k])>0 then // auswahl gefunden
    begin
      ItemIndex:=k;
      break;
    end;
  end;
end;
cbs.Free;
... und später knallts, weil im onchange Ereignis noch ein paar wichtige Dinge passieren, die hier nicht ausgeführt werden

fDataShow.cobsgChange(TComboBox(fDataShow.foView.FindComponent('fld_'+inttostr(i)))); .. und das funktioniert nicht!
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#2

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 11:22
Hallo,
funktioniert das auch nicht?
Die Combobox hast du ja schon:

Delphi-Quellcode:
ItemIndex:=k;
OnChange(Self);
break;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 11:23
Das das Event nicht ausgelößt wird ist so gewollt. Solche Events werden nur bei User-Interaktion ausgelößt.
Das in deinem Fall beim direkten Aufruf des Eventhandlers es nicht klappt kann eigentlich nur an dem Code deines Eventhandlers liegen, da ich dieses Verfahren schon hunderte mal verwendet habe.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 12:08
Zitat von s14:
Delphi-Quellcode:
ItemIndex:=k;
OnChange(Self);
break;
... gibt wieder eine zugriffsverletzung! auf "adresse blabla etc"

... er wählt zwar einen Eintrag aus aber dann knallts beim drücken der Combobox

das onchange ereignis der combobox
Delphi-Quellcode:
...
procedure TfoDBEdit.FormFldChange(Sender: TObject);
var
  FeldNr:integer;
  SatzNr:integer;
begin
  SatzNr:= AktZeile- 1;
  FldValChanged:=true;

  if Sender is TComboBox then
  begin
    cobsgChange(Sender);
    exit;
  end; // if TComboBox
...
...hier der code der ausgeführt wird....

Delphi-Quellcode:
procedure TfoDBEdit.cobsgChange(Sender: TObject);
var
  sidx:integer;
  i:integer;

  FeldNr:integer;
  SatzNr:integer;

begin
  if not (Sender is TComboBox) then
    exit;

  SatzNr:= AktZeile-1;
  if FormStateAkt=viewList then
    FeldNr:= AktSpalte
  else
    FeldNr:= TComboBox(Sender).Tag;

  with sgView do
  begin
    sidx:=TComboBox(Sender).ItemIndex; // ausgewählter Index
    Cells[FeldNr, SatzNr+1]:=TComboBox(Sender).Items.Strings[sidx]; // in Grid übernehmen
    CellContent[SatzNr,FeldNr].luKey:=TStr(TComboBox(Sender).Items.Objects[sidx]).value; // zugehöriger Wert übernehmen

    // suche Combobox die aktuelles Feld als Referenz hat...
    for i:=0 to high(CellContent[SatzNr]) do
    begin
      if i<>FeldNr then
      begin
        if CellContent[SatzNr, FeldNr].Nme=CellContent[SatzNr,i].reFld then
        begin
          CellContent[SatzNr,i].reKey:=CellContent[SatzNr,FeldNr].luKey; // RefKey der CoBx ist aktueller LookUpKey
          CellContent[SatzNr,i].luKey:=inkaNil; // LuKey der CoBx ist Nil!!
          Cells[i,SatzNr+1]:='<undefiniert>'; // Feld ändern im StringGrid
          if FormStateAkt=viewRec then // Formular aktualisieren incl. Combobox
            DataInForm;
        end; // if
      end; // if
    end; // for
    FldValChanged:=true;

  end; // with
end;
[Edit] zweite procedure neu eingefügt! [/Edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 12:50
Moin ibp,

dann müsste der Code-Schnipsel von s14 so aussehen:

Delphi-Quellcode:
ItemIndex:=k;
FormFldChange(<Name der ComboBox>);
break;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 12:55
Delphi-Quellcode:
begin
  ItemIndex:=k;
  OnChange(TComboBox(fDataShow.foView.FindComponent('fld_'+inttostr(i))));
  break;
end
damit durchläuft er jetzt zwar alles ohne probleme, nur wenn ich jetzt auf die combobox klicke, dann gibt es wieder eine zugriffsverletzung!

ich werd wahnsinnig

und das kommt nur durch diese combobox! wenn ich den code ausschalte, klappt alles wunderbar!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#7

Re: Kein OnChange von TComboBox bei zuweisung von Itemindex

  Alt 5. Jan 2005, 13:27
zum Verständnis...

Es gibt eine Komponentenseite in der db-felder angezeigt werden!

wenn ich nun wie oben beschrieben eine comboboxauswahl per code ändere, dann gibt es danach immer eine zugriffsverletzung wenn ich auf diese komponente im formular per maus zugreife. andere comboboxen, die das gleiche onchangeereignis auf der gleichen seite benutzen, lassen sich anklicken ohne probleme!

hat jemand noch eine idee?
  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 03:14 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