Stran 1 od 1

Zoom aplikacije

Objavljeno: 25.01.2014 15:29:10
Napisal/-a drago
Iščem univerzalno rešitev za povečevanje / zmanjševanje vseh gradnikov aplikacije v run time-u.
Nekaj podobnega, kot ima Excel: Če pritisnem tipko Ctrl s koleščkom miške spreminjam velikost pisave, mreže itd.

Šele nedavno sem prešel iz Delphi 6 na Delphi XE3.
V Delphi6 sem si sam naredil funkcijo, ki je preverila vse aktivne Forme aplikacije in obdelala vse forme tako,
da sem v vsakem koraku povečal / zmanjšal font-e, vse ustrezne dimenzije (višino, širino, pozicijo, ..).
Naredil sem si svoj parent Form, preveril posebnosti gradnikov, upošteval parent nastavitve, skratka kar nekaj kode.

Je kdo že reševal (rešil) podoben problem ?

Hvala za odgovor oziroma nasvet.
Drago

Re: Zoom aplikacije

Objavljeno: 26.01.2014 13:51:28
Napisal/-a Silver_War
Uporabljaš VCL ali FireMonkey?

FireMonkey ima že vgrajeno funkcijo povečave s katero lahko povečaš katerokoli komponento in vse komponente ki so na njej.
To je možno, ker FireMonkey tretira komponente kot sličice. Seveda pa tu tudi nastane problem saj lahko povečane komponente na tak način izgledajo grdo.

Re: Zoom aplikacije

Objavljeno: 27.01.2014 14:07:59
Napisal/-a drago
Uporabljam VCL.

Poskušam z metodo ScaleBy. V vsakem koraku povečam oziroma zmanjšam velikost za 10% ( ScaleBy(110,100) oziroma ScaleBy(90,100).
Na testnem Formu mi lepo deluje. Res pa imam na tem formu le nekaj osnovnih gradnikov ( Edit, label, ComboBox,..).
Pri resnih Formih imam pa težavo v primeru, da je na Formu DBGrid. Takole deluje:
- Zmanjševanje gre kar OK
- Pri povečanju v prvem koraku ( iz 100 na 110 ) deluje OK
- V naslednjem koraku povečanja ( iz 110 na 120 ) pa ostale gradnike lepo poveča, DBGrid izgine, program pa zmrzne ( se ne odziva).
Poskušal sem z različnimi koraki. Problem je isti, le da pri manjšem povečanju včasih zmrzne en korak kasneje.

Torej, še vedno rabim pomoč.

Drago

Re: Zoom aplikacije

Objavljeno: 27.01.2014 15:05:54
Napisal/-a Silver_War
Pri VCL-u zna bit to kar teško. DBGrid privzeto ne podpira ScaleBy vsaj ne pravilno verjetno zaradi same zasnove DBGrida namreč vsaka celica je nekako podkomponente DBGrida. Jaz morem priznat, da se te komponente kar izogibam, če je le mogoče (ima še nekaj drugih pomanjkljivosti).
Drugače pa postane še večji problem glede uporabe ScaleBy, kadar uporabljaš razne CheckBox-e.

Jaz sem za eno svojo trivialno aplikacijo naredil posebne izpeljane komponente od vsake komponento, ki sem jo uporabljal. Te izpeljane komponente so imele dodane posebne funkcije, ki so mi omogočale dokaj lepo spreminjanje teh komponent.
V to sem vložil kar veliko dela, vendar sem na koncu vse opustil, saj mi izbran pristop ni omogočal vsega, kar sem od njega pričakoval pričakoval poleg tega pa se je istočasno začelo govorit o vkjučitvi FireMonkey platforme v Delphi.

Re: Zoom aplikacije

Objavljeno: 27.01.2014 16:07:45
Napisal/-a drago
Silver hvala za pomoč in razlago.
Sem bil malo preveč idealist, ker sem pričakoval tako enostavno rešitev.
Jaz se kar tako ne morem odpovedat DBGrid-u že zaradi obstoječih aplikacij. Na večini Form imam vsaj en DBGrid.
Poleg tega sem DBGrid malo dopolnil (poljubno sortiranje, krajšanje vsebine, kontrola pri vnosu v celico glede na tip podatka ).
Verjetno se bom vrnil kar k svoji stari rešitvi. Ker si se tudi sam ukvarjal z istim problemom samo par besed, kako sem se sam tega lotil.
- Korake zoom-a sem vezal na velikost fonta. Običajno uporabljam osnovno velikost fonta 8.
- Koraki Zoom-a so potem: 6,7, 8, 9,10,11,12,13,14.
- Pri create Form sem si shranil podatke gradnikov ( velikost in pozicijo)
- S funkcijo sem izračunal faktor vertikalne in horizontalne spremembe - takole:
-- Pri create gradnika in določitvi velikosti fonta v run time-u delphi sam določi optimalno višino
-- Podam še primerno dolg vpis in pri autosize dobim tudi optimalno širino
-- Če to ponovim za novo in staro višino fonta lahko izračunam razmerje / faktor spremembe
-- Za izračun sem uporabil le osnovni TEdit in TLabel gradnik
Potem sem se pa še posebej lotil gradnikov, ki imajo kakšne posebnosti in jih posebej obdelal
( ComboBox, DBGrid, Memo, RichEdit)
Ja , pa še TLabel sem malo manj povečeval, ker je bil tako izgled lepši.

V Delphi XE3 so te posebnosti malo drugačne, pa sem mislil, da ne bo treba še enkrat preverjat.

Lep pozdrav,
Drago

ps.
Ali je "Silver" pomeni, da si (sva) sivolasa?

Re: Zoom aplikacije

Objavljeno: 27.01.2014 23:53:24
Napisal/-a Silver_War
Tudi jaz sem poiskušal nekaj podobnega. Vendar pa se mi je celoten sistem podrl, če sem poganjal mojo aplikacijo na računalniku, kjer je windows uporabljal nestandardno windowsovo temo (srednja in velika pisava).
Drugače če pa ne uporabljaš velikega števila prilagojenih VCL komponent mogoče nebi bilo slabo, če bi poizkusil tvojo aplikacijo portat na FireMonkey platformo.
Sicer je res FM razmeroma počasen, še posebej če imaš veliko število komponent na formah vendar pa z uporabo FM narediš korak bljižje k portanju tvoje aplikacije na MacOS, kateri postaja vse bolj popularen. In pa prihajajoča podpora za Linux bo tudi najverjetneje temeljila na FM.

Kar se pa tiče mojega vzdevka: Res da se mi pojavljajo sivi laski tu pa tam sem še vedno razmeroma mlad (30 let).
Razlog zakaj imam "Silver" v vzdevku je ta, da je bilo to ime konja v prvotnem filmu "The Legend of the Lone Ranger" iz leta 1981 (http://www.imdb.com/title/tt0082648/?ref_=fn_al_tt_4) katerega sem zelo rad gledal. Ga imam še vedno posnetega na VHS kaseti ;)
Drugače pa ponavadi uporabljam vzdevek SilverWarior vendar ima Delphi.si forum premajhno omejitev dolžine vzdevka.

Re: Zoom aplikacije

Objavljeno: 28.01.2014 10:13:02
Napisal/-a drago
Žal ne poznam FireMonkey. Verjetno bom ostal kar na VCL.
Za osnovni namen je bila moja stara rešitev kar zadovoljiva. Pomembno je predvsem, da uporabnik, ki ne vidi dobro, lahko poveča gradnike. Pri dveh, treh korakih povečave je izgled kar OK. Pomanjšave pa se v glavnem ne rabi. Vendar vedno težim k čim bolj univerzalni rešitvi.

Ne vem zakaj sem dobil občutek, da sva vrstnika. Mogoče zato, ker ne pišeš "telegrafsko", kot običajno mladi. Tudi moji vnuki.
Ja, 65.

Lep pozdrav, Drago

Re: Zoom aplikacije

Objavljeno: 28.01.2014 14:33:44
Napisal/-a Silver_War
drago napisal/-a:Ne vem zakaj sem dobil občutek, da sva vrstnika. Mogoče zato, ker ne pišeš "telegrafsko", kot običajno mladi.
Res da sem še mlad vendar sem "stare šole" :lol:
To pomeni, da vedno poiskušm pisat tako, da bo moje pisanje razumelo čim več ljudi, pa naj so to stari ali mladi. Moram pa priznat, da me skoraj malo moti to da pišem v Slovenščini,, saj sem veliko bolj vajen programerskih pogovorov v Angleščini.