Avatar billede jgthb Nybegynder
24. juli 2006 - 01:22 Der er 16 kommentarer og
1 løsning

memo klik

Hej

Hvordan gør man sådan, at det registreres, hvilken linje i en memo der trykkes på?
Målet er, at jeg skal kunne trykke på en linje i en memo, og så til en anden memo hentes teksten på det linjenummer, der blev trykket på, fra en fil.

tak
Avatar billede vallemanden Nybegynder
24. juli 2006 - 03:26 #1
sådan selecter du en linie

procedure TfrmMain.Memo1Click(Sender: TObject);
var
  Line: Integer;
begin
  with (Sender as TMemo) do
  begin
    Line      := Perform(EM_LINEFROMCHAR, SelStart, 0);
    SelStart  := Perform(EM_LINEINDEX, Line, 0);
    SelLength := Length(Lines[Line]);
  end;
end;
Avatar billede jgthb Nybegynder
24. juli 2006 - 11:48 #2
det var nu ikke helt sådan jeg ville have det, men jeg har rettet lidt i det, så jeg næsten har det jeg vil have:

procedure TForm1.Memo1Click(Sender: TObject);
var
  Line: Integer;
begin
  with (Sender as TMemo) do
  begin
    Line      := Perform(EM_LINEFROMCHAR, SelStart, 0);
    memo2.Lines[line]:='hej';
    //SelStart  := Perform(EM_LINEINDEX, Line, 0);
    //SelLength := Length(Lines[Line]);
  end;
end;

hvordan gør jeg nu sådan, at når jeg trykker et sted i memo1, så begynder skrivemarkøren ikke at blinke?

men tak foreløbigt
Avatar billede vallemanden Nybegynder
24. juli 2006 - 11:53 #3
øhh??

skal du skrive i memo'en?

så har jeg misforstået dig, sorry
Avatar billede kroning Nybegynder
24. juli 2006 - 13:10 #4
Her er et eks. på hvordan man skjuler markøren i en TMemo:
http://delphi.about.com/cs/adptips2003/a/bltip0703_5.htm
Avatar billede jgthb Nybegynder
24. juli 2006 - 18:26 #5
nej, jeg skal netop ikke skrive, og derfor gider jeg ikke se på skrivemarkøren blinke. Jeg skal have en memo med nogle linjer, og så skal jeg kunne trykke på en linje, hvorefter der kommer noget frem i en anden memo, men uden at skrivemarkøren er aktiv i første memo.

Der må da være sådan en indstilling i Object inspector.
Avatar billede jgthb Nybegynder
26. juli 2006 - 22:20 #6
jeg har prøvet eksemplet, men det virker altså ikke!
Avatar billede kroning Nybegynder
26. juli 2006 - 22:36 #7
Det virker fint her i min Delphi 7.
Avatar billede jgthb Nybegynder
26. juli 2006 - 22:46 #8
i denne procedure:
procedure TForm1.MemoChange(Sender: TObject) ;
begin
  CreateCaret(Memo1.handle,0,0,0) ;
end;

skal der vel stå memo1change, ikke?
Avatar billede kroning Nybegynder
26. juli 2006 - 22:56 #9
jow, det er en tryk fejl.
Avatar billede jgthb Nybegynder
26. juli 2006 - 23:00 #10
så forstår jeg det ikke, fordi det er det eneste, jeg ændrer i koden.
Avatar billede kroning Nybegynder
27. juli 2006 - 00:19 #11
Hvordan virker det ikke, kommer der en fejl eller hvad? Bliver koden i de enkelte procedurer kaldt?
Avatar billede jgthb Nybegynder
27. juli 2006 - 00:34 #12
det ved jeg ikke. kan jeg se det med debuggeren? hvordan gør jeg i så fald det?
Avatar billede kroning Nybegynder
27. juli 2006 - 11:37 #13
Du bør læse om hvad du kan med debuggeren for den er til stor hjælp. Men hvis du vil se om en kode bliver udført kan du gøre det enkelt ved at klikke ude til høje (helt ude til højre) for linien således at linien bliver rød, du har nu indsat et break point.
Avatar billede kroning Nybegynder
27. juli 2006 - 11:38 #14
Og når jeg skriver højre så mener jeg venstre :-)
Avatar billede jgthb Nybegynder
28. juli 2006 - 23:31 #15
ok det vil jeg gøre.

Jeg har helt glemt at bede vallemanden lægge et svar. Du er velkommen, vallemanden :)
Avatar billede jgthb Nybegynder
03. august 2006 - 21:18 #16
vallemanden, du er stadig velkommen.
Avatar billede jgthb Nybegynder
10. august 2006 - 23:44 #17
jeg giver point i morgen, vallemanden
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