Gå til innhold

Kolonne selektering/editering i en tekstboks


Anbefalte innlegg

Noen som har en kode/forslag/tips til hvordan man får til "kolonne" selektering/editering i en textbox/richtext kontroll ?

 

Hvis du er usikker på hva jeg mener, så har jeg "visualisert" dette:

 

vanlig markiering, dvs. ikke kolonnemarkering

kolonnemarkering

 

Tenkte å implementere dette i teksteditoren min, men er usikker på hvordan jeg skal gripe det an.

 

Dem som kommer med noe vettug vil bli kreditert!! ;)

 

 

EDIT : kodeforslag må være i VB 6.0

Endret av dga01
Lenke til kommentar
Videoannonse
Annonse

Man kan også gjøre dette via API, men dette krever mye mer arbeid enn eksempelet til Jonas. Jeg tenker meg her at man først lager en kopi av hele hDC-et til tekstboksen, som man så tegner på før hver gjentegning innunder markeringen. Når deretter programmet får en WM_LBUTTONUP, og utføre de nødvendige handlingene herifra.

 

Man må sikkert også ha en variabel som holder hvilken markeringsmetode man benytter; normal eller med kolonnemarkering. I tillegg må man også tegne opp makeringen etter hver oppdatering. Dette kan, som Jonas har vist, gjøres mye lettere i RichTextBox, men da risikerer man å miste den forrige formateringen. Og hvis man har lyst å gå ENDA lenger, kan man bruke WM_CTLCOLOREDIT og WM_PRINT for å tegne den markerte teksten med en annen bakgrunnsfarge i en annen Device Contex, som man så tegner over i tekstboksen alt etter hvor det er nødvendig å markere. Men kan hende blir dette altfor håpløst vanskelig?

Temp.zip

Lenke til kommentar
Er noen bugs hvis du markerer tekst i kantene osv, men burde ikke være så vannskelig å fikser.

 

Å skifte SelColor er bare sånn at du skal kunne se "resultatet". Vet ikke helt om man kan markere tekst flere steder i en RichTextBox.

den fungerte fint, har ikke behove for å ha multiple selection som feks Word har, (selv om det EGENTLIG er det..)..

 

skal se om det går an å bruke denne..

 

utfordringen blir selvsagt å implementere Paste og Cut i kolonnemodus, men det lar seg gjøre..

 

aadnk : skjer ingenting spesielt når jeg starter opp koden din, skal det være nok å fyre opp SubClassControl() prosedyren, eller er det noe mer jeg må gjøre?

Lenke til kommentar
aadnk : skjer ingenting spesielt når jeg starter opp koden din, skal det være nok å fyre opp SubClassControl() prosedyren, eller er det noe mer jeg må gjøre?

Ånei, jeg har glemt å nevne at man må bruke ALT Gr for å markere teksten kolonneaktig. Beklager så meget. :blush:

 

Jeg tror kanskje du kan kombinere begge kodeforslag. Bruk API for å hente "Cut" og "Paste" meldingene (WM_CUT og WM_COPY, se på msdn.microsoft.com), samt det jeg har vist i koden, og benytt Jonas' metode for å fortelle brukeren hva som er markert (ved å endre skriftsfargen).

Endret av aadnk
Lenke til kommentar
aadnk : skjer ingenting spesielt når jeg starter opp koden din, skal det være nok å fyre opp SubClassControl() prosedyren, eller er det noe mer jeg må gjøre?

Ånei, jeg har glemt å nevne at man må bruke ALT Gr for å markere teksten kolonneaktig. Beklager så meget. :blush:

 

Jeg tror kanskje du kan kombinere begge kodeforslag. Bruk API for å hente "Cut" og "Paste" meldingene (WM_CUT og WM_COPY, se på msdn.microsoft.com), samt det jeg har vist i koden, og benytt Jonas' metode for å fortelle brukeren hva som er markert (ved å endre skriftsfargen).

nice, da fungerte den!

 

skal se litt nærmere på denne..

 

tror nok det blir noe alla denne, siden den andre versjonen endre fargen på selve teksten, noe som ikke bør gjøres.

 

Men har nå fått endel å jobbe med, tusen takk skal dere ha begge! :thumbup:

Lenke til kommentar
Har prøvd å lage en egen kontroll til dette. Det er ikke noe tekstboks akkurat, så du må vel ha en egen form i EvolvEd hvis du skal gjøre det lignende. Se vedlegget.

Bra jobba Jonas, vil sikkert få bruk for noe av dette (spes så likte jeg den "snap to grid", litt usikker på om vi kan bruke samme måte i en RTB), og du vil få kreditt når dette er implementert!

(aadnk har joina evolvEd-prosjektet og har "hovedansvaret" for kolonne-modusen nå )

:D

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...