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