właściwości "left" i "top" komponentów

0

We właściwościach komponentów są parametry : "left" i "top". Mają one odpowiednie wartości, które powodują, że komponent ustawia się w odległości ileś tam pixeli od lewej i górnej krawędzi formy.
Proszę o sugestie jak sprawić, aby przyciski, memo i np radiogroup ustawiły się na formie w określonej odległości ale od prawej strony, a nie od lewej. Chodzi o to, że chcę rozciągnąć formę na cały ekran niezależnie od rozdzielczości i wtedy komponenty wychodzą gdzieś w 1/3 ekranu. Gdyby ustawić odległość od prawej a nie lewej, to byłoby to co chcę. Nie wiem jednak, czy w ogóle jest taka możliwość - zamienić 'left" na "right". Wszędzie można przeczytać tylko pobieżnie o właściwościach komponentów. Tego tematu nie widziałem nigdzie. A może trzeba napisać jakąś procedurę, żeby obliczała szerokość okna i komponentu a potem zmieniała wartość "left"-a ???</delphi>

0

popatrz na właściwość Anchors

0

Patrzyłem, nawet pozmieniałem z akLeft true" na "akRight true" ale to niczego nie zmieniło. Proszę o jeszcze parę słów na ten temat.

0

Dzięki za przykład, ale trochę nie o to michodziło - może się nieprecyzyjnie poprzednio wyraziłem. Przy ustawieniu parametru "Windows State": wsNormal, kiedy kliknę na powiększenie okna - jest ok. Ale mnie chodzi o to, że muszę mieć ustawienie "Windows State" na wsMaximized i to wówczas nie działa. Chcę, żeby forma uruchamiała się na pełny ekran.
Może jeszcze jakaś sugestia ???

0
procedure SetRight(C: TComponent; r: Integer);
begin
  c.Left := c.Parent.Width - r - c.Width;
end;

powinno działać - nie sprawdzałem

BTW zamiast ustawiać wsMaximized w DesignTime zostaw wsNormal a w OnCreate daj

  LockWindowUpdate(Handle);
  WindowState := wsMaximized;
  LockWindowUpdate(0);

i wszytko będzie się samo ustawiać

0
edoo napisał(a)

Patrzyłem, nawet pozmieniałem z akLeft true" na "akRight true" ale to niczego nie zmieniło. Proszę o jeszcze parę słów na ten temat.

akLeft na false, akRight na true. Dodatkowo jeszcze można akTop lub akLeft na true.

I to musi działać. Nie ma bata.
Chyba, że masz Delphi np. 2005(nie wiem, jak to jest w 2006), wtedy to nie zawsze działa, ale wtedy wystarczy o dziwo, że w design time lekko zmienisz wielkość formy
(i tak masz ustawione na wsMaximized, więc w run time nie będzie to miało znaczenia)

0

A może po prostu coś takiego:

var prawo:integer;
begin;
prawo:=screen.width-button1.width;
button1.left:=prawo-X; // X to wartość o jaką ma być przesunięty od prawej strony
end;

Pozdrawiam

0

Dzięki za wszystkie sugestie !!! Sprawdzę po kolei. Pozdrawiam i jakby co, będę pytał dalej.

0

Po sprawdzeniu okazało się, że najbardziej skuteczna jest procedurka według receptury podanej przez kolegę mike87 wstawiona do "onCreate". Ustawia to co chcę i jak chcę. Wielkie dzięki !!!</i>

1 użytkowników online, w tym zalogowanych: 0, gości: 1