/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Find caret-pos i memo ud fra skærm/compone~
Fra : Claus Christiansen


Dato : 01-07-01 00:27

Hej

- muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til her
klokken sent... men hvordan finder jeg ud af hvilken caret pos der svarer
til en given x,y koordinat i en memo.

Forklaret anderledes så har jeg brug for ved et højreklik at kunne finde ud
i hvilken caret-pos cursoren ville være blevet placeret hvis det havde været
et venstreklik!

Claus

--
Claus Christiansen, TeamD member <cch@unipeople.dk>

Pythia: http://www.pythia.dk/
Personal: http://www.bigfoot.com/~kruc
============================================-------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)



 
 
Christian Iversen (01-07-2001)
Kommentar
Fra : Christian Iversen


Dato : 01-07-01 00:42

> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til her
> klokken sent... men hvordan finder jeg ud af hvilken caret pos der svarer
> til en given x,y koordinat i en memo.


Mener du et tekst-, eller grafikkordinat?

--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [http://ibm.flawless.dk]



Claus Christiansen (01-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 01-07-01 13:46


"Christian Iversen" <iversen@it.dk> wrote in message
news:9hlo2f$1q38$1@news.cybercity.dk...
> > - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til her
> > klokken sent... men hvordan finder jeg ud af hvilken caret pos der
svarer
> > til en given x,y koordinat i en memo.
>
>
> Mener du et tekst-, eller grafikkordinat?

Tekst, det er jo den der hedder caret :)



Christian Iversen (01-07-2001)
Kommentar
Fra : Christian Iversen


Dato : 01-07-01 19:14

> > > - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til
her
> > > klokken sent... men hvordan finder jeg ud af hvilken caret pos der
> svarer
> > > til en given x,y koordinat i en memo.
> >
> >
> > Mener du et tekst-, eller grafikkordinat?
>
> Tekst, det er jo den der hedder caret :)


Ja, men en caret har også et grafikkordinat! HA!

Jeg havde sådan set håbet det ikke var tekstkordinatet, men lad nu det ligge


Kan du fortælle lidt mere?

- Skal positionen "følge med" når man scroller, eller skal den altid være i
forhold til øverste venstre hjørne?
- Bruger du en fixed-pitch font?

Det er nemlig så meget lettere hvis du bruger en fixed-pitch font

--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [http://ibm.flawless.dk]



Claus Christiansen (01-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 01-07-01 20:31

"Christian Iversen" <iversen@it.dk> wrote in message
news:9hnp5q$14gp$1@news.cybercity.dk...
>>>> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til
>>>> her
>>>> klokken sent... men hvordan finder jeg ud af hvilken caret pos der
>>>> svarer
>>>> til en given x,y koordinat i en memo.
>>>
>>> Mener du et tekst-, eller grafikkordinat?
>>
>> Tekst, det er jo den der hedder caret :)
>
> Ja, men en caret har også et grafikkordinat! HA!

Godt forsøgt! :)

> Jeg havde sådan set håbet det ikke var tekstkordinatet, men lad nu det
ligge
>

Ja, så havde det jo være så meget lettere! :)

> Kan du fortælle lidt mere?
>
> - Skal positionen "følge med" når man scroller, eller skal den altid være
i
> forhold til øverste venstre hjørne?

Hvis jeg forstå din formulering, så skal den "følge med", altså hvis linier
20-30 er synlige så skal jeg også bruge et linie# mellem 10-20.

> - Bruger du en fixed-pitch font?

>
> Det er nemlig så meget lettere hvis du bruger en fixed-pitch font

Nej, men det kan jeg jo blive nød til - man kan det virkelig passe at man er
nød til at tænke selv?!? Og det er vel heller ikke ligefrem nemt selv om man
gør (hvordan afgør man f.eks. hvilken linie der er den første der er
synlig??)

Claus

--
Claus Christiansen, TeamD member <cch@unipeople.dk>

Pythia: http://www.pythia.dk/
Personal: http://www.bigfoot.com/~kruc
============================================-------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)






Christian Iversen (01-07-2001)
Kommentar
Fra : Christian Iversen


Dato : 01-07-01 22:29

> >>>> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til
> >>>> her
> >>>> klokken sent... men hvordan finder jeg ud af hvilken caret pos der
> >>>> svarer
> >>>> til en given x,y koordinat i en memo.
> >>>
> >>> Mener du et tekst-, eller grafikkordinat?
> >>
> >> Tekst, det er jo den der hedder caret :)
> >
> > Ja, men en caret har også et grafikkordinat! HA!
>
> Godt forsøgt! :)

Meget godt forsøgt! Det er faktisk rigtigt!

>
> > Jeg havde sådan set håbet det ikke var tekstkordinatet, men lad nu det
> ligge
> >
>
> Ja, så havde det jo være så meget lettere! :)

BEstemt

> > Kan du fortælle lidt mere?
> >
> > - Skal positionen "følge med" når man scroller, eller skal den altid
være
> i
> > forhold til øverste venstre hjørne?
>
> Hvis jeg forstå din formulering, så skal den "følge med", altså hvis
linier
> 20-30 er synlige så skal jeg også bruge et linie# mellem 10-20.

Nej, så skal den netop ikke "følge med"

Men altså, kordinat i forhold til første synlige linie.

> > - Bruger du en fixed-pitch font?
> >
> > Det er nemlig så meget lettere hvis du bruger en fixed-pitch font
>
> Nej, men det kan jeg jo blive nød til - man kan det virkelig passe at man
er
> nød til at tænke selv?!? Og det er vel heller ikke ligefrem nemt selv om
man
> gør (hvordan afgør man f.eks. hvilken linie der er den første der er
> synlig??)

Hvis det kan være til en hjælp, kan du få index-nummeret i teksten at vide,
ved at
gøre dette:

SendMessage(Memo.Handle, EM_GETSEL, Longint(@Result), 0);

Hvor Result er en PInteger.

(Men det er der ikke meget sjov ved, for den kan man bare aflæse som
property'en "SelStart"

SelStart er et tal, der angiver hvor din caret er henne. Så kunne man ved
højreklik lave noget
i retning af dette stunt (utestet) :

- Gem værdien for SelStart (og dermed din caret)
- Kør proceduren MouseDown (og få din TMemo til at tro at du lige har
*venstre*klikket :)
- Aflæs SelStart (den fortæller nu hvor din caret *ville* have været, hvis
du havde venstreklikket
- Overskriv SelStart med den værdi du oprindeligt aflæste.

Nu er det bare at tælle hvor mange gange du støder på CR+LF i den del
af din tekststreng der kommer før SelStart.

DET burde virke, men sikke da et stunt!

Desværre er der ikke taget højde for scroll. Jeg er ikke helt sikker på om
dette er hvad du leder efter?

--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [http://ibm.flawless.dk]



Claus Christiansen (02-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 02-07-01 07:43


"Christian Iversen" <iversen@it.dk> wrote in message
news:9ho4ke$1lpa$1@news.cybercity.dk...
> > >>>> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til
> > >>>> her klokken sent... men hvordan finder jeg ud af hvilken caret pos
der
> > >>>> svarer til en given x,y koordinat i en memo.
> > >>>
> > >>> Mener du et tekst-, eller grafikkordinat?
> > >>
> > >> Tekst, det er jo den der hedder caret :)
> > >
> > > - Skal positionen "følge med" når man scroller, eller skal den altid
> > > være i forhold til øverste venstre hjørne?
> >
> > Hvis jeg forstå din formulering, så skal den "følge med", altså hvis
> > linier 20-30 er synlige så skal jeg også bruge et linie# mellem 10-20.
>
> Nej, så skal den netop ikke "følge med"
>
> Men altså, kordinat i forhold til første synlige linie.

Nej, netop ikke (så ville linie #10 jo være #1) - er vi enige om at når vi
taler om "i forhold til noget", så vil dette punkt blive betragtet som 1
(evt. 0) :)

<klip>
> > Nej, men det kan jeg jo blive nød til - man kan det virkelig passe at
man
> > er nød til at tænke selv?!? Og det er vel heller ikke ligefrem nemt selv
> > om man gør (hvordan afgør man f.eks. hvilken linie der er den første der
> > er synlig??)
>
> Hvis det kan være til en hjælp, kan du få index-nummeret i teksten at
vide,
> ved at gøre dette:
>
<klip>
>
> SelStart er et tal, der angiver hvor din caret er henne. Så kunne man ved
> højreklik lave noget i retning af dette stunt (utestet):
>
> - Gem værdien for SelStart (og dermed din caret)
> - Kør proceduren MouseDown (og få din TMemo til at tro at du lige har
> *venstre*klikket :)
> - Aflæs SelStart (den fortæller nu hvor din caret *ville* have været, hvis
> du havde venstreklikket
> - Overskriv SelStart med den værdi du oprindeligt aflæste.
>
> Nu er det bare at tælle hvor mange gange du støder på CR+LF i den del
> af din tekststreng der kommer før SelStart.
>
> DET burde virke, men sikke da et stunt!

Se noget i den stil havde jeg også forestillet mig, meeen det virker sg* da
som noget af en panikløsning :)

/Claus

--
Claus Christiansen, TeamD member <cch@unipeople.dk>

Pythia: http://www.pythia.dk/
Personal: http://www.bigfoot.com/~kruc
============================================-------------------------
"Computers are useless. They can only give you answers."
-- Pablo Picasso (1881-1973)




Jens Borrisholt (02-07-2001)
Kommentar
Fra : Jens Borrisholt


Dato : 02-07-01 08:58

Hvis du bruger en Delphi 5 eller nyere så har dit memo felt et property der
hedder CarretPos som giver dig svaret ..

Ellers kan du finde ud af det så ledes :

Function GetCarretPos(aMemo : TCustomMemo) : TPoint;
begin
with aMemo do
begin
Result.X := LongRec(SendMessage(Handle, EM_GETSEL, 0, 0)).Hi;
Result.Y := SendMessage(Handle, EM_LINEFROMCHAR, Result.X, 0);
Result.X := Result.X - SendMessage(Handle, EM_LINEINDEX, -1, 0);
end;
end;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift:
TShiftState);
var
CarreptPos : TPoint;
begin
CarreptPos := GetCarretPos(Memo1);
Caption := Format('CarretPos [x,y] = [%d,%d]',[CarreptPos.x,CarreptPos.y]);
end;


Jens B
"Claus Christiansen" <cch@unipeople.dk> wrote in message
news:Tft%6.1117$c63.132458@news000.worldonline.dk...
> Hej
>
> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til her
> klokken sent... men hvordan finder jeg ud af hvilken caret pos der svarer
> til en given x,y koordinat i en memo.
>
> Forklaret anderledes så har jeg brug for ved et højreklik at kunne finde
ud
> i hvilken caret-pos cursoren ville være blevet placeret hvis det havde
været
> et venstreklik!
>
> Claus
>
> --
> Claus Christiansen, TeamD member <cch@unipeople.dk>
>
> Pythia: http://www.pythia.dk/
> Personal: http://www.bigfoot.com/~kruc
> ============================================-------------------------
> "Computers are useless. They can only give you answers."
> - Pablo Picasso (1881-1973)
>
>



Claus Christiansen (02-07-2001)
Kommentar
Fra : Claus Christiansen


Dato : 02-07-01 16:12

>>"Claus Christiansen" <cch@unipeople.dk> wrote in message
>>news:Tft%6.1117$c63.132458@news000.worldonline.dk...
>> Hej
>>
>> - muligvis et nemt spørgsmål, men jeg synes ikke det er så lige til her
>> klokken sent... men hvordan finder jeg ud af hvilken caret pos der svarer
>> til en given x,y koordinat i en memo.
>>
>> Forklaret anderledes så har jeg brug for ved et højreklik at kunne finde
>> ud i hvilken caret-pos cursoren ville være blevet placeret hvis det havde
>> været et venstreklik!

"Jens Borrisholt" <Jens@Borrisholt.com> wrote in message
news:9hp9iv$fsn$1@news.inet.tele.dk...
> Hvis du bruger en Delphi 5 eller nyere så har dit memo felt et property
der
> hedder CarretPos som giver dig svaret ..
>
> Ellers kan du finde ud af det så ledes :
>
<klip en masse kode>

Jeg tror du har misforstået spørgsmålet, jeg skal ikke vide hvor caret er
placeret, men hvor den ville være placeret hvis brugeren venstreklikker med
musen der hvor musen nu engang er placeret! (Det andet er forøvrigt at finde
under tips på pythia.dk).

Men ellers tak og andre forslag er hjerteligt velkomne!
Claus

--
Claus Christiansen, TeamD member <cch@unipeople.dk>

Pythia: http://www.pythia.dk/
Personal: http://www.bigfoot.com/~kruc
============================================-------------------------
"Computers are useless. They can only give you answers."
-- Pablo Picasso (1881-1973)



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste