Hintergrundfarbe der Form

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Hintergrundfarbe der Form

Beitrag von wennerer »

Hallo an Alle,
ich habe folgendes Problem bei dem ich nicht weiter komme. Ich setze auf eine Form ein Frame. Die Form ist hellgrau, die Frame weiß. Bei der Form ist Autoscroll auf true. Während der Laufzeit ändert sich die Größe der Frame so das diese größer als die Form ist. Scrolle ich nun die Form runter ist der neue Bereich der Form nicht hellgrau sondern bleibt weiß. Such schon länger wie das richtig gemacht wird, finde aber leider nichts. Ach ja, Lazarus 1.6 und Ubuntu.
Schonmal vielen Dank für eure Hilfe!
Bernd

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Hintergrundfarbe der Form

Beitrag von wennerer »

Hallo nochmal,
ich hänge mal noch was zum Probieren an, damit ihr besser versteht was ich meine. Wenn ich scrolle bleibt meine Form im neuen Bereich weiß.

Code: Alles auswählen

 
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
     Frame1 : TFrame;
    procedure FormCreate(Sender: TObject);
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
 begin
  Form1.Color  := clblue;
  Form1.Width  := 650;
  Form1.Height := 500;
  Form1.Caption:= 'Frame=rot, Form=blau';
  Form1.AutoScroll:= true;
 
  Frame1        := TFrame.Create(self);
  Frame1.Parent := Form1;
  Frame1.Color  := clred;
  Frame1.Left   :=  20;
  Frame1.Top    :=  20;
  Frame1.Width  := 250;
  Frame1.Height := 700;
 end;
 
end.
 
 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Hintergrundfarbe der Form

Beitrag von fliegermichl »

Hallo,

ja das ist doch logisch. Der Bereich eines Formulares, der von einem Control belegt wird hat die Farbe des Controls. Wenn jetzt das Control größer als das Formular wird, dann scrollt der vom einen Ende des zu großen Controls zum anderen und das ist nun mal in der Farbe des Controls.

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Hintergrundfarbe der Form

Beitrag von wennerer »

Vielen Dank für deine Antwort.
Wenn das Control in Breite und Höhe größer als das Formular wird verstehe ich deine Antwort. Bei mir wird aber nur die Höhe größer und die Breite ist kleiner. Es bleibt also ein Teil des Formulars sichtbar. Scrolle ich nun ist der obere Bereich der Form blau und unten wird sie weiß. Was muss ich also tun damit die Farbe des Formulars von oben bis unten gleich bleibt?

Gruß
Bernd

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hintergrundfarbe der Form

Beitrag von theo »

Ich benutze eigentlich kaum Frames, deshalb bin ich nicht ganz sicher, aber das sieht für mich nach Bug aus.
Hast du schon im Bug Tracker danach gesucht?
http://wiki.freepascal.org/How_do_I_cre ... _report/de
Vielleicht gibt es auch eine halbwegs logische Erklärung dafür. K.A.

Zwischenzeitliche Abhilfe für deinen spezifischen Fall könnte man so schaffen (Im OnPaint einhängen):

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.FillRect(0,0,Form1.Width,Frame1.Height+20);
end

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Hintergrundfarbe der Form

Beitrag von wennerer »

Hallo Theo,
vielen Dank. Deine Lösung funktioniert einwandfrei, werde ich so machen.
Mit dem Bug Tracker bin ich leider überfordert. Mach das hier nur zum Spaß. :lol:

Viele Grüße
Bernd

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Hintergrundfarbe der Form

Beitrag von Michl »

Habe es eben auch getestet. Dies scheint tatsächlich ein GTK2-Bug zu sein (Win32 funktioniert, GTK2 unter Linux Mint KDE GTK2 nicht). Bitte mach ein Bugreport (Beispiel Sourcecode gezippt), wie von theo vorgeschlagen, sonst wird sich niemand damit befassen und der Fehler wird vergessen, bis wieder jemand über das gleiche Problem stolpert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Hintergrundfarbe der Form

Beitrag von wennerer »

Hallo Michl,
wenn das nicht nur bei mir so ist und ich nichts falsch gemacht habe hast du natürlich recht. Habe mich beim Bugreport angemeldet und den Fehler gemeldet.
Hoffe nur das ich alles richtig ausgefüllt hab. Bin da nicht so firm in so was.

Viele Grüße
Bernd

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Hintergrundfarbe der Form

Beitrag von wp_xyz »

Danke für den Report. Aber in Englisch soltest du ihn schon schreiben, und sei es als Google-Translate-Version. Die Entwickler von Lazarus/FPC sind über die ganze Welt verstreut, und die wenigsten können Deutsch. Englisch ist nun mal die gemeinsame Sprache. Und keine Angst, es gibt hier keine Englisch-Noten!

Ich habe den Report nun auf Englisch übersetzt.

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Hintergrundfarbe der Form

Beitrag von wennerer »

Hallo wp_xyz,
hast du natürlich vollkommen recht. Vielen Dank für deine Arbeit!!
Viele Grüße
Bernd

Antworten