aliniere text in edit control

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

aliniere text in edit control

Post by Zanetti » 28 Apr 2008, 15:43

Cum se poate centra(vertical align) textul dintr-un single line edit control?

Are cineva vreo idee? :?:


Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: aliniere text in edit control

Post by neagu_laurentiu » 28 Apr 2008, 18:39

CEdit::SetMargins sau setezi multiline si ai grija sa nu se duca pe mai multe linii si folosesti CEdit::SetRect

Dragos Cojocari
Membru++
Membru++
Posts: 789
Joined: 11 Jul 2007, 14:11

Re: aliniere text in edit control

Post by Dragos Cojocari » 29 Apr 2008, 12:03

Zanetti wrote:Cum se poate centra(vertical align) textul dintr-un single line edit control?Are cineva vreo idee? :?:
Centrare verticala pe single line nu prea are sens. Probabil ca tu desenezi controlul prea mare ptr fontul folosit. O solutie ar fi sa calculezi inaltimea textului cu fontul folosit in Edit control si apoi sa redimensionezi controlul in mod corespunzator.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: aliniere text in edit control

Post by Ovidiu Cucu » 29 Apr 2008, 13:49

Primul lucru pe care-l fac atunci cand pun un edit (single line) in resurse este sa-i schimb inaltimea implicita de 14 DLUs (dialog units) in 12.
Cu inaltimea 14 textul apare ca "urcat in tavan" pe cand la 12 e centrat si totul este placut privirii oricarui UI-artist.
In plus se aliniaza frumos cu combobox-urile care au implicit 12.
Daca dupa aceea din oaresce motive, ca de exemplu... un "estet" modifica fontul dialogului din design, inaltimea edit-ului apare modificata corespunzator deci textul apare in continuare "centrat" fara alte scarpinari la tampla dreapta cu deshtul de la... (n-are rost sa mai repet) :).

Vezi si definitia pentru Dialog Units:
A horizontal DLU is the average width of the dialog box font divided by four. A vertical DLU is the average height of the font divided by eight...
Cered ca s-a inteles ce vreau sa spun... ;)

User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

Re: aliniere text in edit control

Post by Zanetti » 29 Apr 2008, 17:55

Cu CEdit::SetMargins nu merge faza pt ca poti seta marginile left si right dar pe mine ma interseaza top si bottom.

Daca la controlul respectiv ii raschetezi border-ul si il faci de 12 DLU crede-ma Ovidiu, ca nu mai e asa e placut la vedere.

Alte idei? Sigur nu este vreun mesaj care sa aiba legatura cu alinierea textului
Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: aliniere text in edit control

Post by neagu_laurentiu » 29 Apr 2008, 21:10

Alte idei?
Intra cu buldozerul API/GDI, capteaza-i WndProc-ul, seteaza-i coordonatele de scriere etc... si trebuie sa te asculte !
Poate gasim si altceva pana la solutia de mai sus.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: aliniere text in edit control

Post by Ovidiu Cucu » 29 Apr 2008, 21:19

Zanetti wrote: Daca la controlul respectiv ii raschetezi border-ul si il faci de 12 DLU crede-ma Ovidiu, ca nu mai e asa e placut la vedere.
Daca ii raschetezi borderul (mai binezis ii scoti stilul WS_EX_CLIENTEDGE), oricum edit-ul ala o sa arate ca naiba, fie ca are textul centrat sau nu. In orice caz, nu o sa arate ca un edit pe care un user normal se asteapta sa-l vada.

Acuma ca mai facut curios: imi explici si mie te rog, la ce-ar trebui un edit control single-line, fara bordura si cu textul musai centrat pe verticala?
neagu_laurentiu wrote:
Alte idei?
Intra cu buldozerul API/GDI, capteaza-i WndProc-ul, seteaza-i coordonatele de scriere etc... si trebuie sa te asculte !
Bravo Laurentiu! Uite-asa ne apucam si poate facem un edit control "from scratch". ;)

[ Late edit ]
In lumea programarii Windows se cheltuie o gramada de energie cu centrarea edit-urilor, crearea de edit-uri "transparente", cat si cu mirarea de ce au uitat unii stilul ES_OWNERDRAW...
Dar nu-i nimic. Ne distram si noi cand n-avem altceva mai bun de facut. :biggrin: ;)

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: aliniere text in edit control

Post by neagu_laurentiu » 29 Apr 2008, 23:25

sau setezi multiline si ai grija sa nu se duca pe mai multe linii si folosesti CEdit::SetRect
Asta merge. Am testat-o.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: aliniere text in edit control

Post by Ovidiu Cucu » 29 Apr 2008, 23:59

neagu_laurentiu wrote:
sau setezi multiline si ai grija sa nu se duca pe mai multe linii si folosesti CEdit::SetRect
Asta merge. Am testat-o.
Stiu, am testat-o si eu cand eram mai tanar. :)
Numai ca, dupa aia trebuie sa ai grija sa nu pui "Auto VScroll" + "Want Return" si sa scrii si un document ca nici unul dintre colegii tai sa nu cumva sa faca asa ceva.
Cum ai da-o cum ai drege-o tot carpeala se numeste. ;)

User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

Re: aliniere text in edit control

Post by Zanetti » 30 Apr 2008, 00:27

Ovidiu Cucu wrote:
Acuma ca mai facut curios: imi explici si mie te rog, la ce-ar trebui un edit control single-line, fara bordura si cu textul musai centrat pe verticala?
Poi ideea este ca mi-a placut edit-controlul din SAP si am facut unnul asemantor doar ca al meu nu are textul aliniat vertical pe mijloc. Si cum lucrul acesta ma roade tot timpul... nu pot sa las asa treba pe jumatate facuta
Attachments
visualsi.JPG
edit controlul meu, hmm i-ar sta si mai bine cu textul aliniat vertical pe mijloc
visualsi.JPG (11.11 KiB) Viewed 3868 times
SAP.JPG
edit control SAP
SAP.JPG (19.81 KiB) Viewed 3868 times
Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

Re: aliniere text in edit control

Post by Zanetti » 30 Apr 2008, 00:35

Ovidiu Cucu wrote: Cum ai da-o cum ai drege-o tot carpeala se numeste. ;)
Bine zici Ovidiu! am gasit o solutie pe moment, sa fac edit controlu de 11 DLU, nu mai arata chiar asa de nasol... da tot nu e treaba facuta bine. Tot un fel de carpeala se cheama sau mai bine zis un fel de "lasa ca e bine si asa". :mrgreen:
Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: aliniere text in edit control

Post by Ovidiu Cucu » 30 Apr 2008, 00:44

Tot de curiozitate.
Du-te te rog cu Spy++ul pe aplicatia aia (SAP sau ce-o fi) si spune-mi ce scrie la Class Name pentru "edit"-urile alea cool.

User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

Re: aliniere text in edit control

Post by Zanetti » 30 Apr 2008, 00:55

SAP=ul are in spate Java... GUI e facut in Java. NU pot vedea class name la controalele din zona albastra. Cand fac drag cu Spy++ imi ia toata zona albastra ca o fereastra.

Zona albastra (care dupa cum am zis spy-ul o interpreateaza ca o singura fereastra cu toate ca pe ea se afla diferite controale) are class name: Afx:581D0000:1008

:?: :?:
Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: aliniere text in edit control

Post by Ovidiu Cucu » 30 Apr 2008, 01:26

Zanetti wrote:Zona albastra (care dupa cum am zis spy-ul o interpreateaza ca o singura fereastra cu toate ca pe ea se afla diferite controale) are class name: Afx:581D0000:1008
Esti sigur ca are controale? Ma refer la controale comune Windows, din clasa "Edit". Cel mai probabil nu, mai ales ca ai spus ceva de Java.
Well, sfatul meu: daca programezi cu MFC/Windows API foloseste controalele "Edit" asa cum sunt ele bune-rele si lasa deoparte alte cularai pentru javameni. ;)
Daca totusi si totusi iti trebe si-ti trebe si/sau ai timp prea mult, fa un control custom sau un OCX in care sa pictezi textul cum vrea muschii tai, centrat, oblic sau cu fundu-n sus. N-ar fi chiar un capat de lume. Serios.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: aliniere text in edit control

Post by neagu_laurentiu » 30 Apr 2008, 07:54

carpeala se numeste
Pai a incapsula intr-o clasa myEdit bazata pe CEdit aceste functionalitati se numeste carpeala ?

Post Reply