Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi & Linux, Ausrichtung Controls (https://www.delphipraxis.net/56871-delphi-linux-ausrichtung-controls.html)

skyware 12. Nov 2005 15:41


Delphi & Linux, Ausrichtung Controls
 
Hallo zusammen,

ich bin gerade dran ein Delphi Programm nach Kylix zu portieren.
Funktionierte bisher auch wunderbar, lies sich alles super
kompilieren, keine Fehler vorhanden.
Das einzige Problem das ich nun habe ist das z.B gewissen Controls
nicht identisch ausgerichtet werden wie unter Delphi.
Genauer gesagt, ich kreiere 6 Labels dynamisch auf einem Panel.
Sagen wir denen Label1, Label2, Label3 etc.
Unter Delphi werden die nun korrekt dargestellt, zuerst Label1, dann
Label2, etc...
Unter Kylix wird nun aber zuerst Label6, Label5, Label4...etc.
dargestellt (also genau in umgekehrter Reihenfolge) :wall:

Hat jemand auch schon mal so eine Erfahrung gemacht, resp. weiss
jemand eine Lösung für dieses Problem?

Der Code ist genau der gleiche unter Delphi und Kylix. Und ich möchte
nicht unbedingt mit IFDEF's arbeiten müssen um das mit dieser Reihenfolge
hinzukriegen...

Wäre für Hilfe dankbar! :coder:

malo 12. Nov 2005 15:49

Re: Delphi & Linux, Ausrichtung Controls
 
Wie erzeugst du denn die Elemente?

skyware 12. Nov 2005 16:03

Re: Delphi & Linux, Ausrichtung Controls
 
hier ein kleines Beispiel...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  xPanel : TPanel;

  procedure CreateLabel(const ACaption: string);
  var
    xLabel : TLabel;
  begin
    xLabel := TLabel.Create(xPanel);
    xLabel.Parent := xPanel;
    xLabel.Caption := ACaption;
    xLabel.Top    := 5;
    xLabel.Align  := alLeft;
  end;

begin
  xPanel := TPanel.Create(self);
  xPanel.Visible := false;
  try
    xPanel.Parent := self;
    xPanel.Left := 0;
    xPanel.Top := 0;
    xPanel.Width := 500;
    xPanel.Height := 100;

    CreateLabel('test 1');
    CreateLabel('test 2');
    CreateLabel('test 3');
    CreateLabel('test 4');
    CreateLabel('test 5');
    CreateLabel('test 6');

  finally
    xPanel.Visible := true;
  end;

end;
Ist nicht genau der Code aber vom Prinzip her identisch...

tommie-lie 12. Nov 2005 16:07

Re: Delphi & Linux, Ausrichtung Controls
 
Zitat:

Zitat von skyware
Ist nicht genau der Code aber vom Prinzip her identisch...

Du erzeugst die Labels als durch 6 hintereinanderfolgende Einzelaufrufe und nicht in einer Schleife?

fkerber 12. Nov 2005 16:10

Re: Delphi & Linux, Ausrichtung Controls
 
HI!

Du vergibst keinen Namen für die Labels. Kanns damit zusammenhängen?

Ciao Frederic

skyware 12. Nov 2005 16:11

Re: Delphi & Linux, Ausrichtung Controls
 
es geht nicht um den Aufruf...ist nur ein Beispiel,
klar wäre hier eine Schlaufe schöner.
Aber es geht darum das dann unter Kylix die Labels in umgekehrter
Reihenfolge dargestellt werden...(siehe erstes Posting)

tommie-lie 12. Nov 2005 16:17

Re: Delphi & Linux, Ausrichtung Controls
 
Zitat:

Zitat von skyware
es geht nicht um den Aufruf...ist nur ein Beispiel,

Das schrobst du bereits.

Zitat:

Zitat von skyware
klar wäre hier eine Schlaufe schöner.

Deswegen fragte ich, ob du eine benutzt, oder nicht.

Zitat:

Zitat von skyware
Aber es geht darum das dann unter Kylix die Labels in umgekehrter
Reihenfolge dargestellt werden...(siehe erstes Posting)

Dann? Wenn du eine Schleife benutzt? Also geht es jetzt?

Die Sache ist, daß der Optimizer von Delphi (und somit auch Kylix) die Eigenschaft hat, gerne mal die Abarbeitugnsreihenfolge von Schleifen zu ändern, wenn das möglich ist. Wenn dir jemand einen Gegenfrage stellt, empfiehlt es sich also, diese auch zu beantworten, er wird das nicht nur zum Spaß wissen wollen ;-)

skyware 12. Nov 2005 16:21

Re: Delphi & Linux, Ausrichtung Controls
 
Hallo fkerber,

habe jetzt allen Labels mal noch einen Namen gegeben...leider
ändert das nichts :-(

skyware 12. Nov 2005 16:24

Re: Delphi & Linux, Ausrichtung Controls
 
Hallo tommie-lie,

ok dann hab ich Dich falsch verstanden, entschuldige.
Dachte Du wolltest mit Deinem Beitrag auf den Umstand hinweisen
das ich keine Schleife benutzt habe, was ja im Beispiel möglich gewesen
wäre.
Aber im ursprünglichen Code bei dem ich dieses Problem habe, benutze ich
keine Schleife, sondern kreiere ich die Labels hintereinander, Zeile für
Zeile, wie im Beispiel.

Khabarakh 12. Nov 2005 16:27

Re: Delphi & Linux, Ausrichtung Controls
 
Was für einen Sinn haben übereinandergestapelte Labels :gruebel: ? Ich könnte mir gut vorstellen, dass genau damit Kylix ein Problem hat. Kannst du das Problem nicht anders lösen?

tommie-lie 12. Nov 2005 16:31

Re: Delphi & Linux, Ausrichtung Controls
 
Zitat:

Zitat von skyware
Dachte Du wolltest mit Deinem Beitrag auf den Umstand hinweisen das ich keine Schleife benutzt habe, was ja im Beispiel möglich gewesen wäre.

Nope, dann hätte ich geschrieben "Eine Schleife wäre eleganter" :zwinker:

Zitat:

Zitat von skyware
Aber im ursprünglichen Code bei dem ich dieses Problem habe, benutze ich keine Schleife, sondern kreiere ich die Labels hintereinander, Zeile für Zeile, wie im Beispiel.

Dann weiß ich leider auch keine Lösung. Mir ist nur eine Sache bekannt, die damit zusammenhängt: Ich habe mal in eine Scrollbox mehrere Frames mit Align=alTop eingefügt, die Reihenfolge hat natürlich die Reihenfolge der Frames festgelegt und diese war umgekehrt (das zuletzt eingefügte Frame war als oberstes in der Scrollbox). Da das gesamte Alignment aber von der VCL, bzw von der CLX gehandhabt wird, und die beiden Codebases zwischen Kylix und Delphi geteilt werden, dürfte sich da eigentlich kein Unterschied zwischen Delphi und Kylix ergeben. Du könntest höchstens versuchen nachträglich die Top(bei dir Left)-Position der Reihe nach so zu verändern, daß die Labels in der richtigen Reihenfolge auftauchen.


Edit:
@Khabarakh: Die Labels überlappen sich nicht.

skyware 12. Nov 2005 16:46

Re: Delphi & Linux, Ausrichtung Controls
 
das mit dem nachträglich die Alignment nochmals zu ändern war eine
gute Idee. Ich schmeisse nun alle Labels in eine Liste,
und gehe die dann mit einer Schleife nochmals durch, setze zuerst
alle auf "alRigth", und in einem zweiten Durchgang wieder auf "alLeft".
Danke!

tommie-lie 12. Nov 2005 16:55

Re: Delphi & Linux, Ausrichtung Controls
 
Na dann habe ich ja trotz Ahnungslosigkeit doch noch zur Lösung beigetragen :-)

Zitat:

Zitat von skyware
Ich schmeisse nun alle Labels in eine Liste

TPanel hat doch schon die Eigenschaft Controls oder so ähnlich :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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