screen.onactivecontrolchange

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.

screen.onactivecontrolchange

Beitragvon arturx » 19. Jan 2009, 20:33 screen.onactivecontrolchange

Lazarus 9.26 Beta

das Event screen.onactivecontrolchange wird nicht gefeuert,
wenn der Focus von einem wincontrol zum nächsten geht.
Lediglich beim Öffnen und Schließen eines Formulars wird es aufgerufen...

(Unter Delphi funktioniert das problemlos)

Muss unter Lazarus evt. noch eine Eigenschaft gesetzt werden oder ist das ganz einfach ein Fehler von Lazarus ?

Beisp:

Code: Alles auswählen
procedure  txyz.dosomething(sender : tobject);
begin // dosomething wird nicht aufgerufen
     beep;
end;
//.....
 
constructor txyz.create;
begin screen.onactivecontrolchange := @dosomething;
end;


Es scheint tatsächlich ein Lazarus Bug zu sein.
Wenn analog zu Delphi die letzte Zeile in
customform.inc : tcustomform.setfocusedcontrol geändert wird,
funktionierts : s.u.:
 
Code: Alles auswählen
 
function TCustomForm.SetFocusedControl(Control: TWinControl): Boolean;
var
  ParentForm: TCustomForm;
  CurControl: TWinControl;
begin
  Result := False;
  if (Control<>nil)
  and (csDestroying in Control.ComponentState) then exit;
 
  if (Parent<>nil) then begin
    // delegate to topmost form
    ParentForm:=GetParentForm(Self);
    if ParentForm<>nil then
      ParentForm.SetFocusedControl(Control);
    exit;
  end;
 
  // update FActiveControl
  if (FDesigner = nil) and (not (csLoading in ComponentState)) then
  begin
    if Control <> Self then
      FActiveControl := Control
    else
      FActiveControl := nil;
  end;
 
  // update Screen object
  Screen.FActiveControl := Control;
  if Control<>nil then begin
    Screen.FActiveCustomForm := Self;
    Screen.MoveFormToFocusFront(Self);
    if Self is TForm then
      Screen.FActiveForm := TForm(Self)
    else
      Screen.FActiveForm := nil;
 
 [b] screen.UpdateLastActive; [/b]// <--- added analog  Delphi !!
  end;
Zuletzt geändert von monta am 20. Jan 2009, 16:50, insgesamt 4-mal geändert.
Grund: Codetags, Verschoben
arturx
 
Beiträge: 140
Registriert: 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon pluto » 19. Jan 2009, 21:01 Re: screen.onactivecontrolchange

Hallo, nutze doch bitte zum Formatieren die Code Tags. dann kann man den Soruce-Code besser lesen.
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7039
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon marcov » 20. Jan 2009, 16:40 Re: screen.onactivecontrolchange

Das hoert sich als ein Bug an. Das Vernueftigste ist diese in mantis.freepascal.org einzutragen, mit alle Informationen, und vielleicht ein Patch fuers LCL.
marcov
 
Beiträge: 1063
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

• Themenende •

Zurück zu Lazarus - Bugs



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried