Autor Beitrag
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: So 20.08.17 20:26 
Neues Problem bei Umstellung von D7 auf XE:
Folgende Befehlsfolge mit D7 compiliert führte dazu, dass der Label-Hintergrund in Farbe erscheint (gelb)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
 with Label1 do begin
 color :=clyellow;
 Caption:=Caption + ' ' + Edit1.Text;
endend;

Übersetze ich dieses Beispiel mit Compiler Berlin, dann bleibt Hintergrund unverändert in clBtnFace.
Frage: warum? bzw. wie kann ich den Hintergrund eines Labeltextes färben?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 20.08.17 20:40 
ParentBackground auf false zu stellen könnte helfen. Ansonsten ist TStaticText eine Alternative.

Schön sieht das allerdings in aller Regel nicht aus. Auch wenn man es oft selbst denkt.
t.roller
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 118
Erhaltene Danke: 34



BeitragVerfasst: So 20.08.17 21:39 
Bei XE7 geht es so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Color:= clRed;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Label2.Color:= clYellow;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Label3.Color:= clLime;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; TempComp: TComponent;
begin
  for i := 1 to 100 do
    begin
     TempComp := FindComponent('Label' + IntToStr(i));
     if TempComp <> nil then
        TLabel(FindComponent('Label'+IntToStr(i))).Transparent:= FALSE;
    end;
Self.Color:= clMoneyGreen;
end;

end.
Einloggen, um Attachments anzusehen!
hRb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: Mo 21.08.17 17:38 
Zunächst Danke,
das "Problem" ist viel einfacher und ergab sich aus dem Beispiel.
1. ParentBackground hatte ich schon auf false
2. TStatiktext half auch nicht
3. Beispiel von t.roller sah zunächst verwirrend aus (for 1.. 100 und Labelsuche)
Lösung: in Delphi7 ist bei Label der Parameter Transparent vorbesetzt mit False, während bei XE die Vorbesetzung = True ist. Da ich nie an diesem Schräubchen gedreht habe, viel mir dies nicht auf.
Also einfach Label1.Transparent=false setzen und schon funktioniert es!
gruß hRb