[ martinjuk @ 30.12.2006. 19:12 ] @
Treba mi komponenta poput TEdit, TLabel, TMemo, ali koja moze da ispisuje slova vertikalno. Na intenetu nisam uspeo naci, a mrsko mi pisati, jer mi se cini dosta slozenom. Takodje bi trebalo i da na osnovu kreirane forme odstampam izvestaj, koji ce imati tabelu sa nekim vertikalno ispisanim recima. Tabela ne treba da se kreira iz baze nego programski.
Takve komponente sam trazio i u Visual Studio 2005, ali nisam nasao.
Molim vas za pomoc.
[ morlic @ 30.12.2006. 21:26 ] @
Tesko, vertikalni edit ne... label da, ali edit...
[ savkic @ 30.12.2006. 22:20 ] @
> Treba mi komponenta poput TEdit, TLabel, TMemo, ali koja moze da ispisuje slova vertikalno.

Vertikalni labeli već postoje, njih nije ni teško napraviti. Možda ih ima u JVCLu, ili pogledaj neke druge setove komponenti.
Vertikalni edit prvi put čujem da neko traži, tako da sumnjam da postoji gotov. pitam se šta će ti. Elem, može se i to napraviti, napravi se naslednik standardnog edita koji će biti visok a uzak, napravi se poseban vertikalni font i radi se custom iscrtavanje sadržaja. Za memo ne mogu ni da zamislim kako bi izgledao unos teksta, ali se i to može uraditi, ključ je u custom iscrtavanju i posebnom fontu. Izveštaji sa vertikalnim kontrolama, mislim da postoje, negde sam ih viđao ali ne znam da li to ima u nekom od standardnom Delphi report komponenti.
[ martinjuk @ 31.12.2006. 14:07 ] @
Treba mi da napravim tabelu u kojoj ce neke kolone imati vertikalno a neke horizontalno ispisan tekst. Ovaj vertikalni dodje kao naslov, koji ima vise redova pod sobom. Ne verujem da bi to korisnicima bilo cudno, jer takva tabela moze da se napravi u Word-u, i izgleda sasvim OK.
Nisam nasao takve komponente na internetu, po vas molim da mi kazete tacno ukoliko znate gde ima. Sto se tice pravljenja takve komponente, ne bih voleo da koristim neki zaseban font, nego da koristim standardne. Jedini nacin koji mi pada na pamet jeste da imam neki skriveni TEdit u koji cu upisivati ono sto korisnik otkuca, a zatim njegov Canvas kopirati zarotirano piksel po piksel u svoju komponentu. Bojim se da bi ovo mnogo glavilo racunar.
[ savkic @ 31.12.2006. 15:00 ] @
> Treba mi da napravim tabelu u kojoj ce neke kolone imati vertikalno a neke horizontalno ispisan tekst. Ovaj vertikalni dodje kao naslov, koji
> ima vise redova pod sobom.

Kakva tabela? Poput DBGrida? Koliko znam tako nešto ne postoji, jedino da radiš custom iscrtavanje.

> Sto se tice pravljenja takve komponente, ne bih voleo da koristim neki zaseban font, nego da koristim standardne.

Koriste se standardni fontovi (Arial, Courier New, Verdana...) ali napravljeni na poseban način (kao što radi i Word).

Code:

var
  lf : TLogFont;
begin
  GetObject(Canvas.Font.Handle, SizeOf(TLogFont), @lf);

  lf.lfEscapement := 900;
  lf.lfOrientation := 900;
  lf.lfOutPrecision := OUT_TT_ONLY_PRECIS;
  Canvas.Font.Handle := CreateFontIndirect(LF);

  Canvas.TextOut(100, 100, 'Pera');


Ovo ti je primer kako da iscrtaš nešto na canvasu forme, za vertikalni edit bi se koristio naslednik TEdit sa overrajdovanim OnPaint gde bi se na takav način crtao sadržaj.
[ martinjuk @ 02.01.2007. 17:21 ] @
Sve se moze lako uraditi samo treba reci pravu rec. Ali treba je znati...

Mnogo hvala! Radi.

Sto se tice tabele to mi nije problem. Dinamicki je kreiram od TEdit-a i TMemo-a.
[ martinjuk @ 03.01.2007. 20:57 ] @
Postoji jedan problem.
Ovo dobro radi na formi, ali TEdit nema metod OnPaint, i nemam pojma sta bi trebalo da overridujem. Pokusao sam da pratim kako radi TEdit, ali nisam uspeo da provalim sta iscrtava slova. Slova se pojavljuju u metodu koji se zove DefaultHandler, ali se tu prosledjuju nekakve poruke, i sta onda?
[ savkic @ 04.01.2007. 01:41 ] @
> Ovo dobro radi na formi, ali TEdit nema metod OnPaint, i nemam pojma sta bi trebalo da overridujem.

WM_PAINT.

> Pokusao sam da pratim kako radi TEdit, ali nisam uspeo da provalim sta iscrtava slova. Slova se pojavljuju u metodu koji se zove DefaultHandler,
> ali se tu prosledjuju nekakve poruke, i sta onda?

Iscrtavanje se prepušta DefWindowProc tj. windowsu.