AGB  ·  Datenschutz  ·  Impressum  







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

Positionierung via Align buggt rum...

Ein Thema von glkgereon · begonnen am 15. Apr 2007 · letzter Beitrag vom 15. Apr 2007
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 10:16
Hi,

Ich habe ein Eingabefeld (für einen Chat) mit ein paar Controls dabei.
insgesamt ein Edit (oder Memo), drei Buttongroups und eine TFatMemo (im prinzip auch eine Memo).

Die sollen einfach übereinander gestapelt werden (Align:=alBottom)
Nun habe ich das Problem, dass die Reihenfolge irgendwie verrückt spielt...

Bisher sieht die konstruktion so aus:
Ich habe mir eine Komponente von TPanel abgeleitet und dadrauf die ganzen Sachen positioniert.
Es gibt 2 Darstellungsmodi.
- Setzen der Höhe nach der Summe der einzelnen Höhen
- Setzen der einzelnen Höhen nach der Gesamthöhe

Also rufe ich immer im Paint folgendes auf:
Delphi-Quellcode:
begin
  if (FLastHeight<>Height) or (FLastWidth<>Width) then
  begin //Wenn sich was verändert hat dann mal höhen updaten...
    UpdateHeight;
    FLastHeight:=Height;
    FLastWidth:=Width;
  end;
  inherited;
end;
Delphi-Quellcode:
procedure TFatPreviewEditor.UpdateHeight;
var H: Integer;
begin
  Case FDefineHeight of
    dhbParticulars:
    begin
      H:=2;
      if Multiline then
        Inc(H,FMemo.Height)
      else
        Inc(H,FEdit.Height);
      if Preview then Inc(H,FPreviewMemo.Height+2);
      if FInputButtons.Visible then Inc(H,FInputButtons.Height+2);
      if FSmilieButtons.Visible then Inc(H,FSmilieButtons.Height+2);
      if FInputColors.Visible then Inc(H,FInputColors.Height+2);
      Height:=H;
    end;
    dhbOverall:
    begin
      H:=Height;
      if FInputButtons.Visible then Dec(H,FInputButtons.Height+2);
      if FSmilieButtons.Visible then Dec(H,FSmilieButtons.Height+2);
      if FInputColors.Visible then Dec(H,FInputColors.Height+2);
      if Preview then begin
        H:=H div 2;
        FPreviewMemo.Height:=H-2;
      end;
      if Multiline then
        FMemo.Height:=H-2
      else
        FEdit.Height:=H-2;
    end;
  end;
  FMemo.Top:=0; //Hier versuche ich die zu sortieren...
  FEdit.Top:=0;
  FInputButtons.Top:=0;
  FInputColors.Top:=0;
  FSmilieButtons.Top:=0;
  FPreviewMemo.Top:=0;
end;
Das funktioniert auch soweit alles...
Aber die Reihenfolge ist manchmal durcheinandergewürfelt.
Aber auch nicht zufällig, sondern bei einer bestimmten Größe immer gleich
Was mache ich falsch/was könnte ich anders machen?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 11:08
wenn du bei allen Top auf 0 setzt ist es eben eine Art Glücksspiel welches das oberste ist. Setze die Top-Werte entsprechend so das klar ersichtlich ist welches ganz oben ist.
Delphi-Quellcode:
erstes.top := 0;
zweites.top := 1;
[...]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 11:11
Delphi-Quellcode:
  FMemo.Top:=5;
  FEdit.Top:=4;
  FInputButtons.Top:=3;
  FInputColors.Top:=2;
  FSmilieButtons.Top:=1;
  FPreviewMemo.Top:=0;
Macht exakt das selbe
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 11:16
kannst du das projekt mal anhängen? bzw. geht es wenn du die Top-Werte richtig setzt?
Delphi-Quellcode:
FMemo.Top:=FMemo.Parent.Height - FMemo.Height;
FEdit.Top:=FMemo.Top - FEdit.height;
FInputButtons.Top:=FEdit.Top - FInputButtons.Height;
[...]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 11:24
Zitat von SirThornberry:
kannst du das projekt mal anhängen? bzw. geht es wenn du die Top-Werte richtig setzt?
Delphi-Quellcode:
FMemo.Top:=FMemo.Parent.Height - FMemo.Height;
FEdit.Top:=FMemo.Top - FEdit.height;
FInputButtons.Top:=FEdit.Top - FInputButtons.Height;
[...]
Also mit Projekt anhängen ist schwierig
Ein weitere Problem ist dass Smilies und Colors nur manchmal angezeigt werden, und es ist nur entweder Edit oder Memo sichtbar.

Ich habe es nun mal so gemacht:
Delphi-Quellcode:
  FPreviewMemo.Top:=0;
  FSmilieButtons.Top:=FPreviewMemo.Height;
  FInputColors.Top:=FPreviewMemo.Height+10;
  FInputButtons.Top:=FPreviewMemo.Height+20;
  FEdit.Top:=FInputButtons.Top+FInputButtons.Height;
  FMemo.Top:=FInputButtons.Top+FInputButtons.Height;
und es funktioniert

Danke
»Unlösbare Probleme sind in der Regel schwierig...«
  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 09:58 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