Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 16:15 Der er 15 kommentarer og
3 løsninger

Tekst parser, hvordan?

Hej...

dette er efter min mening et virkeligt svært spørgsmål... :/...

Jeg bruger Canvas funktion, TextOut til at skrive noget tekst MEN den kan ikke lave:

Linieskift
Linieskift når teksten er for lang ( når en linie fx er længere end fx 200 px )
Fed, Understreget, Kursiv og forskellige størrelser

jeg søger så en kode der kan lave dette...

hvis vi sagde teksten var

[B]HEJ [I]MED[/I][/B] [U]dig[/U]

jeg er glad for at se dig


og vi så sagde at boksen kun er 100 px bred, så skal "jeg er glad for at se dig" deles op, og hej med dig, skal være fed, understreget og kursiv de forskellige steder..

forstår i hvad jeg mener?
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 16:22 #1
der skal self. så også være fx

[SIZE=X]

om det hedder fx [SSZE=X] eller /SX/ eller hvad det nu er, er jeg lige glad med... da jeg ikke har programmeret den del endnu
Avatar billede claes65 Nybegynder
10. februar 2005 - 17:15 #2
Hej, forsøger du at lave noget du kan sende til en printer?

- Claes
Avatar billede martinlind Nybegynder
10. februar 2005 - 17:19 #3
Du skal bruge det api kald der hedder DrawText(); det kan det du gerne vil, nemlig lave lineskift hvis din tekst er for bred, så kig i Windows API help, der er en forklaring til hvordan du kalder den.
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 17:41 #4
nej, skal ikke bruges til en printer...

martinlind... eksempel?
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 17:45 #5
hvor er windows api help henne`?
Avatar billede martinlind Nybegynder
10. februar 2005 - 18:04 #6
du kan finde det via startmenu'en og ind under delphi
Avatar billede claes65 Nybegynder
10. februar 2005 - 18:05 #7
Avatar billede claes65 Nybegynder
10. februar 2005 - 18:06 #8
Der findes forresten også en DrawTextEx funktion der kan endnu mere.
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 18:09 #9
har fået min funktion til at lave linieskift... så skal bruge:
Linieskift når teksten er for lang ( når en linie fx er længere end fx 200 px )
Fed, Understreget, Kursiv og forskellige størrelser
Avatar billede martinlind Nybegynder
10. februar 2005 - 18:13 #10
// ARect : TRect;

DrawText(Canvas.Handle,PChar(Strx),-1,ARect,DT_LEFT+DT_VCENTER+DT_SINGLELINE);
Avatar billede martinlind Nybegynder
10. februar 2005 - 18:15 #11
Du kan godt mixe brug af alm canvas metoder og DrawText
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 18:25 #12
men din kode kan jo ikke tage fed, undetstreget osv.
Avatar billede doc404 Novice
10. februar 2005 - 20:24 #13
Der er intet i Windows API der kan det du ønsker. Enten er du nød til at kode dig ud af det eller også finde en kompnent der kan. Med mindre du sætter et "lag" ind over en RichEdit.

Ønsker du selv at kode er det jo *blot* et spørgsmål om at parse linievis og finde bredde og højde på de enkelte tekststumper indtil du har en komplet linie. Så udskrive linien der hvor den nu skal være. Du er i bund og grund nød til at lave arbejdet to gange. Først finder du størrelsen på det der skal vises og derefter tegner du det. Du kan bruge funktion som Canvas.TextWidth og Canvas.TextHeight.

Men du er igang med at opfinde den dybe tallerken endnu en gang. Og løsningen er ikke nem...

Kig evt. på http://jansfreeware.com/jfdelphi.htm og den komponent der hedder TjanMarkupLabel. Om ikke andet er det altid inspirende at se hvordan andre har løst en opgave.
Avatar billede espeholt_jr Nybegynder
10. februar 2005 - 20:45 #14
det skal kunne skrives i et TBitmap så...da det skal bruges som et layer i et imgview komponent
Avatar billede hrc Mester
11. februar 2005 - 13:00 #15
Prøv eventuelt at søge under mine svar. Jeg har er en løsning der udskriver tekst, begrænset på den margin der er for papiret.

Er du i øvrigt ved at få andre til at lave dine skoleopgaver?
Avatar billede espeholt_jr Nybegynder
11. februar 2005 - 13:06 #16
okay...

Hehe nej, skal bruge det til at program... ;)

hvorfor da?
Avatar billede espeholt_jr Nybegynder
11. februar 2005 - 16:26 #17
hhm jeg har stortset lavet det nu :)

hrc->fed er breddere end ikke-fed fx...

men har 4 bug... 1. fed er breddere end fed... skal bruge en TextWidth funktion, som også tager fed, og kursiv med....

den der kan lave mig den funktion får pointsne...

har svar fra martinlind og doc404, men der er jo ingen kode, som jeg søgte...
Avatar billede espeholt_jr Nybegynder
18. februar 2005 - 19:42 #18
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester