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

Odpowiedz Nowy wątek
2006-11-28 12:34
edoo
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>

Pozostało 580 znaków

2006-11-28 13:01
0

popatrz na właściwość Anchors


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-28 13:17
edoo
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.

Pozostało 580 znaków

2006-11-28 13:33
0

niczego :> ciekawe http://rapidshare.com/files/5156462/Project1.exe.html


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-28 14:39
edoo
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 ???

Pozostało 580 znaków

2006-11-28 15:55
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ć


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-28 16:24
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)

Pozostało 580 znaków

2006-11-29 21:51
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

Pozostało 580 znaków

2006-11-30 08:29
edoo
0

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

Pozostało 580 znaków

2006-12-04 14:27
edoo
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>

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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