Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - TImage fyzicky na kraji formulára, ak sa nachádza na TPageControl

No a už ma trápi len posledná vec.

Mám na formulári TPageControl a na jednej stránke TImage. Všetko je natlačené úplne vľavo a teoreticky by mal byť TImage hneď na začiatku formulára. No ale nie je tomu tak. Medzi Hranicou formlára a TImage sú asi 4 voľné body. Na TPageControl mám vypnuté zobrazovanie ušiek a vzhľad nastavený na tsButtons. Neviem tam už nájsť žiadnu inú vlastnosť, ktorá by s tým vedela niečo spraviť.

Předmět Autor Datum
Tak vyhod to TPageControl a riad si vykreslovanie/skryvanie komponentov sam.
MM.. 12.06.2006 13:37
MM..
A k cemu to vubec potrebujes ?
Jan Fiala 12.06.2006 14:26
Jan Fiala
Robím hru v jednom formulári. Cez TPageControl prepínam strany na hru alebo menu. Lenže po prepnutí…
msx. 12.06.2006 22:49
msx.
TPageControl obsahuje "rámeček" kolem, o ten je všechno uvnitř posunuto a jeho šířku nelze (normální…
Rce 12.06.2006 23:16
Rce
Ďakujem. No a možno to už vyznie blbo, ale nechápem tomuto: Mám obrázok veľký 20x20 bodov, ale aby…
msx. 12.06.2006 23:46
msx.
To bude suvisiet s tym ako s tym potom dana metoda dalej pracuje, pravdepodobne ziskava velkost obra…
MM.. 13.06.2006 00:05
MM..
Asi to bude drobný bug VCL Delphi při přepočtu souřadnic pro volání Windows API nebo nepřesnost v po…
Rce 13.06.2006 00:15
Rce
Mal by som napísať do Borlandu a možno mi dajú posledné Developer Studio Architekt ako pozornosť pod…
msx. 13.06.2006 00:19
msx.
Ešte k tomu TPageControl. Toto bola jedniná komponenta, ktorá mi umožnila vyriešiť dilemu, čo s množ…
msx. 13.06.2006 00:23
msx.
Tak zas nemusis prejst az na uroven WinAPI :-), len nepouzi ten TPageControl ak ma nasilu okraj, ale…
MM.. 13.06.2006 00:27
MM..
No ešte teda porozmýšľam.
msx. 13.06.2006 00:31
msx.
Este podpichnem :-) Nechapem teraz celkom aku filozofiu ma Delphi s tym canvasom a dialogmi apod., a…
MM.. 13.06.2006 00:35
MM..
V čom ty vlastne programuješ? MS Visual Studio? Ja som si nedávno nainštaloval C++Builder a celkom s…
msx. 13.06.2006 09:11
msx.
Na C++ se vykasli! Java rulezzz. 8-):))
MaSo 13.06.2006 12:51
MaSo
V assembleri :-D Ak potrebujem Win aplikaciu tak VisualC++, trochu ma v poslednej dobe zacal zaujima…
MM.. 13.06.2006 13:09
MM..
Veď ja nájdem nejaké riešenie ohľadom tej hry. Keď už spomínaš BC++ 3.1 pre DOS, tak mám otázku. Ne…
msx. 13.06.2006 22:54
msx.
VC++ je dobrej i BDS je good , po update2 na BDS je vse taky super dokonce pribyli i nake componenty…
virus 13.06.2006 23:12
virus
Nemam tu teraz BC3.1, myslim ze na to bol tam lib.exe (vid. napr. www.uv.tietgen.dk/Staff/Mlha/PC/So…
MM.. 14.06.2006 12:23
MM..
Ja som myslel, že LIB bol len pre BC++.::) poslední
msx. 14.06.2006 12:38
msx.

TPageControl obsahuje "rámeček" kolem, o ten je všechno uvnitř posunuto a jeho šířku nelze (normálními prostředky = bez hacknutí zdrojáku) změnit. Doporučuju použít na přepínání uch TTabControl nebo TTabSet a prvky nacpat do TPanel a vhodně nastavovat Visible nebo natahovat do jednoho TImage obrázky dle potřeby. BTW pro zásobu obrázků stejné velikosti lze celkem dobře použít TImageList.

Ďakujem.

No a možno to už vyznie blbo, ale nechápem tomuto:
Mám obrázok veľký 20x20 bodov, ale aby sa zobrazil celý, tak som musel použiť toto

  Image.Canvas.CopyRect(Rect(20, 20, 40, 40), imgWurmi[1].Canvas, Rect(0, 0, 20, 20));

miesto

  Image.Canvas.CopyRect(Rect(20, 20, 39, 39), imgWurmi[1].Canvas, Rect(0, 0, 19, 19));

Prečo?

To bude suvisiet s tym ako s tym potom dana metoda dalej pracuje, pravdepodobne ziskava velkost obrazku odcitanim x_prave - x_lave takze bude fungovat to vrchne. Ak to nikde nie je presne definovane a si si pokusne zistil ze to vrchne funguje dobre tak to pouzivaj tak (WinAPI fcie na pracu s bitmapami nepouzivaju rectangle, ale x,y,width,height, co je IMHO jasnejsie, nedochadza k takymto dilemam).

Ešte k tomu TPageControl. Toto bola jedniná komponenta, ktorá mi umožnila vyriešiť dilemu, čo s množstvom komponent, ktoré by sa bez TPageControl prekrývali. Som na silných úvahách, že to spravím tak, ako tu už bolo napísané. Vykašlať sa na všetko a pustiť sa do všetkého ručne. Asi to tak spravím a kašlem na vizuálne možnosti Delphi. Aspoň lepšie pochopím prácu objektov a tiež aj výsledný súbor EXE bude o poznanie kratší.

Este podpichnem :-)
Nechapem teraz celkom aku filozofiu ma Delphi s tym canvasom a dialogmi apod., ale ja keby som robil takuto hru (VC++) tak to robim inac - bola by to normalne SDI aplikacia s menu, kde by som si client oblast vykresloval sam v WM_PAINT (to je brnkacka aj tak toho wurma musim kreslit sam), a v menu by sa napr. po kliknuti na "Options" zobrazil dialog s nastaveniami (vytvoril by sa az v tom momente na zaklade resource, to je tiez brnkacka), alebo by boli priamo nastavenia v menu (zaskrtavacie), napr. sound (on, off) apod.

P.S. tebe ale asi ide o ten zoznam hracov na zaciatku, tak to by asi bolo tiez v klienskej oblasti ale ako dialog, s nejakym list-om apod., to uz by bolo trochu problematickejsie ale tiez by som to vytvaral len ak by bolo treba a potom uplne zrusil, podvedome nemam rad visible=false, ani vykreslovanie bitmap do tab-ov, je to silne neefektivne.

P.S. ale u takejto gamesy je to asi jedno, nie je to moc narocne na HW...

V čom ty vlastne programuješ? MS Visual Studio? Ja som si nedávno nainštaloval C++Builder a celkom sa mi začína páčiť, hoci som v ňom ešte nič nespravil. Ide o to, že program v C++ sa mi zdá vzhľadovo prehľadnejší a lepšie sa v ňom píše (napr. i++ alebo n /= 4 atď.) A uvažujem, že by som prešiel na C++ od MS. Hádam mi počítač bude stačiť na Visual Studio.

Edit: K hre: Nechce sa mi vytvárať vo vizuále objekty, ktoré budú nahádzané na sebe a potom prepínať panely. Asi to urobím predsa len tak, že objekty nebudú v DFM, ale ich vytvorím priamo z programu a pri štarte. Samozrejme na panely a tie budem len prepínať. Okrem toho aj tak počas behu programu formulár neuvidím, takže je úplne jedno, či objekty vytvorím programovo alebo vizuálne. Vlastne takto budem mať celý DFM súbor "prepísaný" do PAS.

V assembleri :-D
Ak potrebujem Win aplikaciu tak VisualC++, trochu ma v poslednej dobe zacal zaujimat devcpp (lebo nemam vsade VC++ a devcpp je freeware), je to celkom pouzitelne ale velmi tam chyba editor resourcov a nejaky classwizzard a nejaka slusna objektova kniznica (ale urcite sa da nejaka stiahnut). Ak vie niekto poradit dobre doplnky k devcpp tak sem s nimi :-)
A kedysi davno DOS aplikacie v BorlandC 3.1. To bol asi posledny produkt borlandu ktory sa mi zdal vyborny, neskorsie buildery sa mi nepacili.

Edit: k hre: ja ti teraz uz moc nerozumiem, pouzivas uz moc delphi terminologiu. Nakreslit si mozes snad tie panely osobitne a potom jeden vytvorit a druhy zrusit apod., alebo to v delphi nejde? Vytvarat si staticke resources programovo je dost zbytocna namaha. Ale uz som radsej ticho, ty to programujes ja ti nechcem do toho moc kecat ;-)

Veď ja nájdem nejaké riešenie ohľadom tej hry.

Keď už spomínaš BC++ 3.1 pre DOS, tak mám otázku. Nejakú dobu som v tom programoval, ale využíval som len možnosti C, nie C++. Ale doteraz som neprišiel na to, ako sa dá vytvoriť LIB súbor s funkciami. Niečo ako sú v Turbo Pascale knižnice TPU. Totiž, ja som mal funkcie, ktoré som chcel vraziť do knižnice, knižnicu prilinkovať k programu (ani to som nevedel ako) a pomocoou hlavičkových súborov deklarovať funkcie. Ja som nevedel vytvoriť LIB súbor a bol som nútený k projektu pridávať CPP súbor s funkciami, ktoré som hcel mať v LIB. Takže ako na to? Netreba presný postup, lebo už v DOSe nič nerobím, ale len tak okrajovo, že čo bolo treba nastaviť, čo spustiť a tak.

Nemam tu teraz BC3.1, myslim ze na to bol tam lib.exe (vid. napr. www.uv.tietgen.dk/Staff/Mlha/PC/Soft/Prog/BAS/DOS/v bdos/LIB.htm) ktory zo sady .obj urobil .lib, ale zhlavy uz si nepamatam ci sa to dalo aj v GUI, alebo nastaveniami linkera. Vsetko bolo urcite popisane v helpe ktory bol k BC++

P.S. neviem preco miesas C++ a .lib, .lib sa da pouzit vsade (aj keby si programoval v assembleri), nielen u C++.
Podpora OOP myslim ze este nebola dokonala (moc som ju vtedy nepouzival, PC boli pomale), ale bola.

Zpět do poradny Odpovědět na původní otázku Nahoru