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ť.
Tak vyhod to TPageControl a riad si vykreslovanie/skryvanie komponentov sam.
A k cemu to vubec potrebujes ?
Robím hru v jednom formulári. Cez TPageControl prepínam strany na hru alebo menu. Lenže po prepnutí strany potrebujem, aby som mal prístupnú celú stranu a nie vyseknutý okraj, ktorý zaberá TPageControl.
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
miesto
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).
Asi to bude drobný bug VCL Delphi při přepočtu souřadnic pro volání Windows API nebo nepřesnost v popise TCanvas. Mám pocit, že jsem na tento problém už taky narazil.
Mal by som napísať do Borlandu a možno mi dajú posledné Developer Studio Architekt ako pozornosť podniku za nájdenie chyby.
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ší.
Tak zas nemusis prejst az na uroven WinAPI , len nepouzi ten TPageControl ak ma nasilu okraj, ale tie komponenty ktore si daval na TPageControl davaj cez seba a zviditelnuj resp. vytvaraj/zrus podla toho co delphi dovoluje.
... resp. to co pisal Rce: TTabControl apod.
No ešte teda porozmýšľam.
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.
Na C++ se vykasli! Java rulezzz.
V assembleri
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.
VC++ je dobrej i BDS je good , po update2 na BDS je vse taky super dokonce pribyli i nake componenty.
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.
Ja som myslel, že LIB bol len pre BC++.