AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kompontenten dynamisch

Ein Thema von Killer · begonnen am 28. Nov 2003 · letzter Beitrag vom 28. Nov 2003
Antwort Antwort
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#1

Kompontenten dynamisch

  Alt 28. Nov 2003, 12:12
Hi ich hab mir einige TLabels dynamisch erzeugt (per Schleife), wie bekomm ich sie nun dazu, dass sie einen regelmäßigen Abstand zwischen sich haben (zb. 20 Pixel) ect.?
  Mit Zitat antworten Zitat
ichhabefertig

Registriert seit: 8. Jul 2003
51 Beiträge
 
#2

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 12:34
Hallo,

Du kannst den TLabels doch Koordinatenwerte zuweisen, also Top und Left. Um immer 20 Pixel Abstand zu haben musst Du einfach Top auf den Topwert des darüberliegenden TLabels +20 +Höhe des darüber liegenden TLabels setzen.

Hoffe, das wahr einigermassen verständlich.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 12:53
Das hier ist meine Schleife:
Delphi-Quellcode:
procedure TQuickReport3.QuickRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var i: Integer;
begin
 for i := 0 to Form1.DBGrid1.Columns.Count-1 do begin
  if TQRLabel(FindComponent('RLabel_'+IntToStr(i))) = nil then begin
  Lab := TQRLabel.Create(Self);
  Lab.Font.Style := [fsBold];
  Lab.Parent := QuickReport3.ColumnHeaderBand1;
  Lab.Name := 'RLabel_'+IntToStr(i);
  Lab.AlignToBand := True;
  Lab.Caption := Form1.DBGrid1.Columns[i].Title.Caption;
 end;
 end;
end;
Wie muss ich das denn jetzt einbauen? Also Top iss mal nebensächlich, da sie ja auf einem QuickReport-Band liegen, also müsste ich nur noch Left ändern, was ich aber nicht schaffe. Hat jemand nen Ansatz dafür?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 13:05
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

Delphi-Quellcode:
Procedure TQuickReport3.QuickRepBeforePrint(Sender: TCustomQuickRep; Var PrintReport: Boolean);
  Var i, T: Integer;

  Begin
{}  T := 30; {Position des obersten Labels}
    For i := 0 to Form1.DBGrid1.Columns.Count - 1 do
      If TQRLabel(FindComponent('RLabel_' + IntToStr(i))) = nil Then Begin
        Lab := TQRLabel.Create(Self);
        Lab.Font.Style := [fsBold];
        Lab.Parent := QuickReport3.ColumnHeaderBand1;
        Lab.Name := 'RLabel_' + IntToStr(i);
        Lab.AlignToBand := True;
        Lab.Caption := Form1.DBGrid1.Columns[i].Title.Caption;
{}      Lab.Left := 10; {Position von Links}
{}      Lab.Top := T;
{}      Inc(T, Lab.Height + 20{Abstand});
      End;
  End;

http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 13:33
Hallo himitsu, leider funktioniert dein Beispiel auch nicht. Habe grad vorher geschrieben, dass ich die Höhe nicht verändern muss, da die Labels auf einem Band plaziert sind

Ich hab es mal wie folgt geändert, was aber ebensowenig funktioniert:
Delphi-Quellcode:
procedure TQuickReport3.QuickRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var i,T: Integer;
begin
 T := 0;
 for i := 0 to Form1.DBGrid1.Columns.Count-1 do begin
  if TQRLabel(FindComponent('RLabel_'+IntToStr(i))) = nil then begin
  Lab := TQRLabel.Create(Self);
  Lab.Font.Style := [fsBold];
  Lab.Parent := QuickReport3.ColumnHeaderBand1;
  Lab.Name := 'RLabel_'+IntToStr(i);
  Lab.AlignToBand := True;
  Lab.Caption := Form1.DBGrid1.Columns[i].Title.Caption;
  // Ab hier
  Lab.Left := T; {Position von Links}
  Inc(T, Lab.Width + 50{Abstand});
 end;
 end;
end;
Er plaziert mir immer alle Labels aufeinander, wodurch der Text logischerweise nicht mehr lesbar ist.
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#6

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 13:59
Hoi, ich hab das so gelöst:
lab.left := ((i-1)*(lab.width + 20)); [edit]da bei mir i mit 1 beginnt muss das -1 bei dir raus!
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

Re: Kompontenten dynamisch

  Alt 28. Nov 2003, 14:00
Wenn die Label's automatisch ausgerichtet werden, könntest du es ja mal so versuchen:

Delphi-Quellcode:
Procedure TQuickReport3.QuickRepBeforePrint(Sender: TCustomQuickRep; Var PrintReport: Boolean);
  Var i: Integer;

  Begin
    For i := 0 to Form1.DBGrid1.Columns.Count - 1 do
      If TQRLabel(FindComponent('RLabel_' + IntToStr(i))) = nil Then Begin
        Lab := TQRLabel.Create(Self);
{}      Lab.AutoSize := True;
        Lab.Font.Style := [fsBold];
        Lab.Parent := QuickReport3.ColumnHeaderBand1;
        Lab.Name := 'RLabel_' + IntToStr(i);
        Lab.AlignToBand := True;
        Lab.Caption := Form1.DBGrid1.Columns[i].Title.Caption;
{}      Lab.AutoSize := False;
{}      Lab.Width := Lab.Width + 50{Abstand};
      End;
  End;
Oder du legst eine andere, nicht sichtbare Komponente, als Abstandshalter, dazwischen.

(Angaben ohne Gewähr)


http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 21:10 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