Tedit unter WIN nicht editierbar

Für Fragen von Einsteigern und Programmieranfängern...

Tedit unter WIN nicht editierbar

Beitragvon malabarista » 5. Sep 2017, 10:10 Tedit unter WIN nicht editierbar

Ich habe ein Projekt unter Linux Mint 18.1 64-bit entwickelt und es nach Windows 7 64-bit transportiert.
Es funktioniert alles, bis auf ein paar Tedit-Felder. Sie lassen sich nicht anklicken und auch nicht editieren.
Linux: LCL-Version 1.6.2 , FPC 3.0.0 64-linux-gtk2
Windows: LCL-Version 1.6.4, FPC 3.0.2, i386-win32

Wenn ich die gleiche lfm nach Linux kopiere und das Projekt neu kompiliere, sind die Felder aber editierbar.

Nachstehend die .lfm . Es handelt sich um die Felder vdatum_e und bdatum_e .
Code: Alles auswählen
 
object Fktb: TFktb
  Left = 473
  Height = 750
  Top = 0
  Width = 1024
  Caption = 'Küchentagebuch'
  ClientHeight = 750
  ClientWidth = 1024
  OnClose = close0
  OnCreate = create0
  LCLVersion = '1.6.4.0'
  object titel_l: TLabel
    Left = 46
    Height = 15
    Top = 23
    Width = 42
    Caption = 'Bestand'
    ParentColor = False
  end
  object liste: TStringGrid
    Left = 49
    Height = 590
    Top = 56
    Width = 960
    ColCount = 7
    FixedCols = 0
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goThumbTracking, goSmoothScroll]
    RowCount = 1
    TabOrder = 4
    OnPrepareCanvas = ausrichten
  end
  object vdatum_l: TLabel
    Left = 344
    Height = 15
    Top = 23
    Width = 69
    Caption = 'Von Datum : '
    ParentColor = False
  end
  object Button1: TButton
    Left = 448
    Height = 40
    Top = 648
    Width = 160
    Caption = 'Drucken'
    OnClick = drucken
    TabOrder = 2
  end
  object Panel1: TPanel
    Left = 848
    Height = 40
    Top = 648
    Width = 160
    BevelWidth = 3
    Caption = 'Abbruch'
    Color = 8439282
    ParentColor = False
    TabOrder = 5
    OnClick = zuruck
  end
  object bdatum_l: TLabel
    Left = 622
    Height = 15
    Top = 24
    Width = 63
    Caption = 'Bis Datum : '
    ParentColor = False
  end
  object vdatum_e: TEdit
    Left = 448
    Height = 23
    Top = 16
    Width = 100
    MaxLength = 10
    TabOrder = 0
  end
  object bdatum_e: TEdit
    Left = 720
    Height = 23
    Top = 16
    Width = 100
    MaxLength = 10
    TabOrder = 1
  end
  object Button2: TButton
    Left = 48
    Height = 40
    Top = 648
    Width = 163
    Caption = 'Anzeigen'
    OnClick = anzeigen
    TabOrder = 3
  end
end
 

Ich habe ausserdem noch screenshots des Objektinspektors angehängt: einmal Feld:pname (funktioniert) und Feld: vdatum_e (funktioniert nicht).
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon malabarista » 5. Sep 2017, 11:10 Re: Tedit unter WIN nicht editierbar

Ich habe mal weiter getestet:
bei keinem Tedt kann ich etwas eingeben, nur beim Login-Bildschirm.
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon malabarista » 5. Sep 2017, 11:35 Re: Tedit unter WIN nicht editierbar

So, jetzt bin ich etwas weiter, brauche aber eure Hilfe.

Wenn ich bei einem Form zuerst die Tab-Taste betätige, dann geht der Cursor in dieses Editfeld und es ist editierbar.

Bedeutet dies, dass der Focus irgendwo (undefiniert) sitzt ?
Und was kann ich dagegen tun ?
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Michl » 5. Sep 2017, 11:49 Re: Tedit unter WIN nicht editierbar

Was ist das Parent des Formulars?
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2169
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon malabarista » 5. Sep 2017, 17:53 Re: Tedit unter WIN nicht editierbar

Das Hauptformular mit einem TMainMenu.
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon malabarista » 5. Sep 2017, 18:17 Re: Tedit unter WIN nicht editierbar

Was mir noch aufgefallen ist:
wenn jetzt der Focus beim Tedit1 ist, kann ich nur mittels der TAB-Taste zum Tedit2 kommen.
Ein Anklicken des Tedit2 mit der Maus setzt NICHT den Focus auf edit2, sondern der verbleibt beim edit1. Bis ich die TAB-Taste betätige.
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Michl » 5. Sep 2017, 18:25 Re: Tedit unter WIN nicht editierbar

Unter Windows solltest du kein Parent zuweisen. Das ist ein bekannter Windows-Bug. Lazarus kann da nichts dafür. Nutze einfach normale Fenster (Parent = nil).
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2169
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon malabarista » 6. Sep 2017, 08:24 Re: Tedit unter WIN nicht editierbar

ok, das scheint zu funktionieren mit parent:=nil.

Zwei Fragen habe ich noch:
1. Gilt das generell: unter Windows darf kein Fenster ein parent haben ? Oder nur, falls es sich um das Hauptfenster mit Tmainmenu handelt ?
2. Diese Fenster ohne parent: gibt es da besondere Nachteile oder Konsequenzen, auf die ich beim Programmieren achten muss ?
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Michl » 6. Sep 2017, 09:29 Re: Tedit unter WIN nicht editierbar

Das MDI-Anwendungen Prinzip funktioniert nicht gut unter Windows, sobald mit indirekten Windows Funktionen gearbeitet werden muss. Würde man auf die LCL verzichten, würden diese Fenster richtig reagieren. Ich hatte das Problem mal vor einiger Zeit ausführlicher debuggt und versucht ähnlich hier abzustellen. Hatte es auch zum Laufen bekommen, dabei jedoch eine Menge neue Bugs ins Haus geholt. Einen Bugeintrag dazu gibt es auch noch: https://bugs.freepascal.org/view.php?id=31027

Zu 1.: Ich weiß nicht mehr genau, bei welchen Controls es überall Probleme gibt, daher würde ich generell davon abraten. Wenn man Child-Fenster haben möchte, gibt es andere Lösungen. Viele sind auch hier im Forum schon diskutiert worden.

Zu 2.: Nein.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2169
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon malabarista » 6. Sep 2017, 11:23 Re: Tedit unter WIN nicht editierbar

dankeschön!
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried