A kötő- és kapcsoló komponensek alkotják

A kötő- és kapcsoló komponensek alkotják

Nem tudom, hogy pontosan hogyan kell hívni a kérdést, és egyből a lényeg.
Van egy űrlapot 3 Timage. 1 található központjában balra, a másik jobbra a közepén a forma, 3 - a központ a jobb oldalon.
Ezek a dinamikusan betölthető képek, az összes vagyon kell Arányos.
Ha átméretezés formájában képek kiköltözik a pozíciójukat

Meg kell elérni, mint a hatás, ha az űrlap átméretezett (maximalizálják) alkatrészek TImage volna tartani
vonatkozó rendelkezések formájában a megfelelő arányban, + növekszik / csökken a kép átméretezés során.

Próbáltam horgonyok ingatlan
1 I mutattak valódi (balra, bootom, fel)
y 2 - y 1 I kiállítva igaz (balra, bootom, fel, jobbra)
3 - mutatott a valódi (jobbra, bootom, fel)

de csak a központi képet ezután emelkedett, és a másik nem, kényszerek tulajdonság nem működik

ha y 2 eltávolítás balra és jobbra, míg az 1 és 3 nagyobb és 2 kicsi marad

Általában az a kérdés, hogyan valósítható meg

Talán néhány skrinshotik feküdt ki? És nagyon nehéz megérteni. Például, én rosszul képzelni, hogy milyen „van a közepén a bal oldalon.”

panel - ez olyan, mint Timage
alul - Headercontrol

1 képernyőkép formában a normál állapotban
2 alakja a szétnyitott állapotban

Most a panel kell bővíteni és a helyén marad, ahogyan azt headercontrol

Azt hiszem, kell, de ez nem d7

Azt hiszem, nem nehéz felismerni a logikája viselkedés „kézzel” írásával azt a formáját felvezető OnResize.

Joe - már próbáltam, buggy miután több risayzov, különösen azután, hogy maximalizálják

itt a kód

i: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / (345/105));
J: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / 43,125);
Image2.Width: = i;
Image3.Width: = i;
Image4.Width: = i;
Image2.Left: = j;
Image3.Left: = j * 2 + i;
Image4.Left: = j * 3 + 2 * i;>

Három kép a grupbokse kotorgo hossza 345
A kép hossza 105
43.125 az aránya 345/8
8 - ez image2.left
illetve, ha az alak növeli a bal növekszik

Mellesleg a kötési komponenseket.

Még mindig szembesülnek azzal a problémával, 1

forma, PageControl, 2 oldal,
1 oldal címke (RightJustify) horgonyok (helyesen)
azaz A címke a jobb szélén van igazítva, az ingatlan autoSize' = true

és így,
az alkalmazás indulásakor formájában Átméretezi (növekszik)
2. Az alapértelmezett oldalanként meghatározott bármilyen szöveges címke
váltani az első oldalra
és látjuk, hogy a címke nem jobbra tolódik

és ha autoSize' hamis, akkor minden rendben
Itt egy hiba

és ha poslezapuska 1 válassza oldalt, akkor a második, rendelni szöveges címkét, hogy visszatérjen az első, minden OK!

> I: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / (345
> / 105));
> J: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / 43,125)
>;

Te, persze, sajnálom, de milyen feints füle?

Általában itt egy példa (nagyolás) kód, amely végrehajtja (ha jól értettem a feladatot) szükséges. Ő, egyrészt - néhány felesleges, a másik - nem teljes, de nem elég sokoldalú, hogy befejezze azt a helyes irányba.

# XA0; TAnchorType = (atLeft, atRight, atBottom);
# XA0; TAnchorTypes = halmaza TAnchorType;

# XA0; TPlacementPoilitics = rekord
# XA0; # XA0; AnchorType: TAnchorTypes;
# XA0; # XA0; LeftCoeff,
# XA0; # XA0; TopCoeff,
# XA0; # XA0; RightCoeff,
# XA0; # XA0; BottomCoeff: Single
# XA0; end;

funkció CreatePlacementPolitics (AControl: TWinControl;
# XA0; AType: TAnchorTypes): TPlacementPoilitics;

eljárás ApplyPlacementPolitics # XA0; (AControl: TWinControl; Politika: TPlacementPoilitics);

funkció CreatePlacementPolitics (AControl: TWinControl;
# XA0; AType: TAnchorTypes): TPlacementPoilitics;
kezdődik
# XA0; az eredmény do
# XA0; kezdődik
# XA0; # XA0; AnchorType: = AType;
# XA0; # XA0, ha atLeft a AType majd
# XA0; # XA0; # XA0; LeftCoeff: = AControl.Left / GetParentForm (AControl) .Width;
# XA0; # XA0, ha atRight a AType majd
# XA0; # XA0; # XA0; RightCoeff: = AControl.Width / GetParentForm (AControl) .Width;
# XA0; # XA0, ha atBottom a AType majd
# XA0; # XA0; # XA0; BottomCoeff: = AControl.Height / GetParentForm (AControl) .Height;
# XA0; end;

eljárás ApplyPlacementPolitics # XA0; (AControl: TWinControl; Politika: TPlacementPoilitics);
kezdődik
# XA0; a Politika do
# XA0; kezdődik
# XA0; # XA0, ha atLeft a Politics.AnchorType majd
# XA0; # XA0; kezdődik
# XA0; # XA0; # XA0; AControl.Left # XA0 ;: = Round (LeftCoeff * GetParentForm (AControl) .Width);
# XA0; # XA0; end;

# XA0; # XA0, ha atRight a Politics.AnchorType majd
# XA0; # XA0; # XA0; AControl.Width # XA0 ;: = Round (RightCoeff * GetParentForm (AControl) .Width);

# XA0; # XA0, ha atBottom a Politics.AnchorType majd
# XA0; # XA0; # XA0; AControl.Height # XA0 ;: = Round (BottomCoeff * GetParentForm (AControl) .Height);
# XA0; end;
végén;

Alkalmazási példa (esetében készített 3 panelek a [2]):


típus
# XA0; TForm27 = osztály (TForm)
# XA0; # XA0; PANEL2: TPanel;
# XA0; # XA0; Panel3: TPanel;
# XA0; # XA0; Panel1: TPanel;
# XA0; # XA0; eljárással FormCreate (Sender: TObject);
# XA0; # XA0; eljárással FormResize (Sender: TObject);
# XA0; magán-
# XA0; # XA0; Panel1Politics: TPlacementPoilitics;
# XA0; # XA0; Panel2Politics: TPlacementPoilitics;
# XA0; # XA0; Panel3Politics: TPlacementPoilitics;
# XA0; end;

eljárás TForm27.FormCreate (Sender: TObject);
kezdődik
# XA0; Panel1Politics: = CreatePlacementPolitics (Panel1, [atRight, atBottom]);
# XA0; Panel2Politics: = CreatePlacementPolitics (PANEL2, [atLeft, atRight, atBottom]);
# XA0; Panel3Politics: = CreatePlacementPolitics (Panel3, [atLeft, atRight, atBottom]);
végén;

eljárás TForm27.FormResize (Sender: TObject);
kezdődik
# XA0; ApplyPlacementPolitics (Panel1, Panel1Politics);
# XA0; ApplyPlacementPolitics (PANEL2, Panel2Politics);
# XA0; ApplyPlacementPolitics (Panel3, Panel3Politics); # XA0;
végén;

És kérem, ne gúnyolódni összes szentek bennem, ne tegyen többet, mint ez:
i: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / (345/105));
J: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / 43,125);


> És kérlek, ne gúnyolódni összes szentek bennem,
> # XA0, ne tegyen többet, mint ez:
> I: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / (345
> / 105));
> J: = Kerek (StrToFloat (inttostr (GroupBox13.Width)) / 43.
> 125);

Ez, IMHO, bal / után alakult a kísérleti módszer a „vak lándzsa”.

Ui Most add megoldás a Windows egyáltalán! (A kijelző felbontását, font változás „nagy / normál”, stb, stb -)


> Van egy űrlapot 3 Timage. 1 található a központban, a bal oldalon, a másik
> Exact központja a forma, 3 - a központ a jobb oldalon.

És ez a probléma fel ezeket Imago panel és állítsa igazítása balra AlLeft jobbra Alright és a központi mindent mást?

És ez a probléma fel ezeket Imago panel és állítsa igazítása balra AlLeft jobbra Alright és a központi mindent mást?

És mit csinál így? Próbálja. Ez nem, mire van szükség:
Csak kép közepén növekedni fog.

> [12] allrussia # XA0; (04.12.06 17:12)
> Elen
>
> Mi az a probléma, hogy ezek a Imago panel és állítsa
> Állítsa be a bal oldalon a jobb AlLeft Alright és a központi
> Ami a többit?
>
> És mit csinál így? Próbálja. Will nem olyan
> Kötelező:
> Csak kép közepén növekedni fog.

Te kódot [9] megpróbált?

biztos, hogy megpróbálja elérni a célt

Radír - 3 hozzászólás nem tud olvasni?

Joe - Nem értem, hogyan kódot kell használni

> [17] allrussia # XA0; (04.12.06 21:28)
> Joe - Nem értem, hogyan kódot kell használni

Azaz?

Joe - ahol a szabványos betét yunit1
Próbáltam meggyötört 10 percig próbáltam az összes lehetőséget

> [19] allrussia # XA0; (04.12.06 21:32)
> Joe - ahol a szabványos betét yunit1
> Próbáltam meggyötört 10 percig próbáltam az összes lehetőséget

Huhh. Ezt sajnálom, a kérdés még ennél is jóval alacsonyabb, mint az ág „kezdők”, nem is beszélve a „Basic”. Különben is, mióta jött.

Hozzon létre egy külön egységet a projektben. Mondjuk Unit1.pas. Ebben a részben ez teszi felületet használja SysUtils, vezérlők, űrlapok és a kód
típus

TAnchorType = (atLeft, atRight, atBottom);
TAnchorTypes = halmaza TAnchorType;

TPlacementPoilitics = rekord
# XA0; AnchorType: TAnchorTypes;
# XA0; LeftCoeff,
# XA0; TopCoeff,
# XA0; RightCoeff,
# XA0; BottomCoeff: Single
végén;

funkció CreatePlacementPolitics (AControl: TWinControl;
AType: TAnchorTypes): TPlacementPoilitics;

eljárás ApplyPlacementPolitics # XA0; (AControl: TWinControl; Politika: TPlacementPoilitics);


Szóval deklarált típus 2, 1 és 1 funkció eljárást.

Most, a végrehajtási fejezetében hozzá a végrehajtás a funkciók és eljárások:

funkció CreatePlacementPolitics (AControl: TWinControl;
AType: TAnchorTypes): TPlacementPoilitics;
kezdődik
A Eredmény do
kezdődik
# XA0; AnchorType: = AType;
# XA0; ha atLeft a AType majd
# XA0; # XA0; LeftCoeff: = AControl.Left / GetParentForm (AControl) .Width;
# XA0; ha atRight a AType majd
# XA0; # XA0; RightCoeff: = AControl.Width / GetParentForm (AControl) .Width;
# XA0; ha atBottom a AType majd
# XA0; # XA0; BottomCoeff: = AControl.Height / GetParentForm (AControl) .Height;
végén;
végén;

eljárás ApplyPlacementPolitics # XA0; (AControl: TWinControl; Politika: TPlacementPoilitics);
kezdődik
A Politika do
kezdődik
# XA0; ha atLeft a Politics.AnchorType majd
# XA0; # XA0; AControl.Left # XA0 ;: = Round (LeftCoeff * GetParentForm (AControl) .Width);

# XA0; ha atRight a Politics.AnchorType majd
# XA0; # XA0; AControl.Width # XA0 ;: = Round (RightCoeff * GetParentForm (AControl) .Width);

# XA0; ha atBottom a Politics.AnchorType majd
# XA0; # XA0; AControl.Height # XA0 ;: = Round (BottomCoeff * GetParentForm (AControl) .Height);
végén;
végén;

CreatePlacementPolitics függvény létrehoz egy bejegyzést (rekordot) információkat a „kötelező” át utódjának TWinControl.
ApplyPlacementPolitics eljárás használ egy korábban elmentett kötő politika a megadott TWinControl „a.

Ezután a fő formája szakaszban használja interface részben add egység1.
Pomeschaesch alkotnak három panel, és elhelyezi őket, ahogy húzott éhgyomri [2].
Létrehozni, osztályokat három saját változókkal, azaz:
típus
TForm27 = osztály (TForm)
# XA0;.
magán
# XA0; Panel1Politics,
# XA0; Panel2Politics,
# XA0; Panel3Politics: TPlacementPoilitics;
végén;

Továbbá, a OnCreate esemény formák határozzák meg a politikát helyezi hektikus panelek és eltárolja egy megfelelő privát mezők jövőbeni használatra:
eljárás TForm27.FormCreate (Sender: TObject);
kezdődik
Panel1Politics: = CreatePlacementPolitics (Panel1, [atRight, atBottom]);
Panel2Politics: = CreatePlacementPolitics (PANEL2, [atLeft, atRight, atBottom]);
Panel3Politics: = CreatePlacementPolitics (Panel3, [atLeft, atRight, atBottom]);
végén;
És végül, a forma felvezető OnResize alkalmaznak a panelek előre lefoglalt ülőhelyek politika (minden panel - a):
eljárás TForm27.FormResize (Sender: TObject);
kezdődik
ApplyPlacementPolitics (Panel1, Panel1Politics);
ApplyPlacementPolitics (PANEL2, Panel2Politics);
ApplyPlacementPolitics (Panel3, Panel3Politics); # XA0;
végén;

Sajnos, igazítás csúszott.

Tesztelem a kódot
csak 50% - növelésével fopmy minden rendben
csökken:
1) A harmadik panel helyesen csökken
2) ha a panel Timage el van forgatva 180 fokkal a vízszintes tengelyen, és elindul tükrözött

Próbáltam tájékoztatása szerint Nail, egy kicsit jobb, de a hibák nem tűnnek el
Persze, nem tudom megérteni, hogy miért?
összehangolása, mit mutatnak a paneleken?

én a fenti kódot jobban működött.

Van egy rövid megjegyzést a kódot Joe. Politika kell cserélni a politika, de a szem vágott :)

> [22] allrussia # XA0; (14.12.06 20:53)
> Align amit kiállított panelek?

Nem.
A csökkenés természetesen kerekítési hibák lesz észrevehető. Csak megközelítés megmutatta konkrét megvalósítására kell eszünkbe egy fájlt :)

Próbáld ki, hogy egy TPanel minden képet a panel viszont helyezni a „platform”. A panelek megadhatja igazítás,

Röviden, én találtam ki ezt a kódot. Powered by 100%. Pontosság - 1 osztás méretét ellenőrzés. A probléma megoldódott. Téma - a fémhulladék: p

# XA0;
kezdődik
# XA0; i: = (GroupBox13.Width - 4) div 3;
# XA0; j: = (GroupBox13.Width - 4) mod 3;
# XA0; esetén j a
# XA0; 0: kezdődik
# XA0; # XA0; # XA0; Panel1.Width: = i;
# XA0; # XA0; # XA0; Panel2.Width: = i;
# XA0; # XA0; # XA0; Panel3.Width: = i;
# XA0; # XA0; végén;
# XA0 1: kezdődik
# XA0; # XA0; # XA0; Panel1.Width: = i;
# XA0; # XA0; # XA0; Panel2.Width: = i + 1;
# XA0; # XA0; # XA0; Panel3.Width: = i;
# XA0; # XA0; végén;
# XA0 2: kezdődik
# XA0; # XA0; # XA0; Panel1.Width: = i + 1;
# XA0; # XA0; # XA0; Panel2.Width: = i;
# XA0; # XA0; # XA0; Panel3.Width: = i + 1;
# XA0; # XA0; végén;
végén;

Memória: 0,81 MB
Idő: 0.094 c