Avatar billede ossi Nybegynder
19. september 2001 - 19:18 Der er 8 kommentarer og
1 løsning

ListBox - Memo?!

Hej alle Delphi programmører,

Jeg søger lidt kode til D4...

Jeg vil som følger...:

Jeg har et Memo Felt og en ListBox (Visible := False). Når man skriver tegnet [ i memoen skal ListBox\'en vises MEN...: Den skal vises ligesom den der der kommer frem når man skriver i Delphis kode vindue... Altså lige under linien man skriver på og justeret fra venstre så den er ved den-blinkende-tingest...

Er nogle der kan hjælpe mig med det?!

Lidt kode ville være dejligt!!

[.:Ossi:.]
http://www2001115.thinkquest.dk
Avatar billede borrisholt Novice
20. september 2001 - 09:59 #1
Joeee ... Efter lidt fisken frem og til bage fandt jeg frem til den følgende løsning :

Placer en Memo på din From ...

Og skriv så det følgende :

BEMÆRK At jwg sætter ListBOXEN på i hånden :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure Memo1KeyUp(Sender: TObject; var Key: Word;  Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    ListBox1: TListBox;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function TextExtent(const DC : HDC; const Text: string): TSize;
begin
  Result.cX := 0;
  Result.cY := 0;
  Windows.GetTextExtentPoint32(DC, PChar(Text), Length(Text), Result);
end;

function TextWidth(const DC : HDC; const Text: string): Integer;
begin
  Result := TextExtent(DC,Text).cX;
end;

function TextHeight(const DC : HDC; const Text: string): Integer;
begin
  Result := TextExtent(DC,Text).cY;
end;


procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;  Shift: TShiftState);
var
  Point : TPoint;
  i, j : Integer;
  Dc : HDC;
  s : String;

begin
  if not ((ssAlt in Shift) and (key = 56)) then
    exit;
  Point := Memo1.CaretPos;

  i := Memo1.Perform(EM_GETFIRSTVISIBLELINE, 0 ,0) ;
  DC := GetDC(Memo1.Handle);
  j:= Trunc((16 * (Point.Y - i)  ) * 0.8);

  ListBox1.Top := j + 8;
  s:= Memo1.Lines[Point.Y];
  s:= copy(s, 1, Point.X+1);
  j := TextWidth(DC, s);
  ListBox1.Left := j;
  ListBox1.Clear;


  ListBox1.Visible := true;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1:= TListBox.Create(Memo1);
  ListBox1.Visible := false;
  ListBox1.parent := Memo1;
  ListBox1.Width := 250;

end;

end.

Jens B
Avatar billede borrisholt Novice
20. september 2001 - 10:04 #2
hov det var et svar .....

Etenligt burde det nok laves som  et komponent ....

Jens B
Avatar billede borrisholt Novice
25. september 2001 - 12:42 #3
OSSI >> Hvis du kan bruge svaret må du gerne lukke ...

Jens B
Avatar billede ossi Nybegynder
26. september 2001 - 11:52 #4
--Undskyld!

Jeg havde glemt det :)

Det var fint... fungerede dog ikke helt men jeg får det nok til det!! c:)

[.:Ossi:.]
Avatar billede borrisholt Novice
26. september 2001 - 12:10 #5
Ossi>> Prøv at se om du kan hacke den på plads ..  Så kan vi altid lave et komponent ud af den bag efter ....

Send mig etv løsninen når du har en ...

Jens B
Avatar billede ossi Nybegynder
26. september 2001 - 12:36 #6
OK...! Jeg prøver at se om jeg kan få det til at virke som jeg vil have det og så sender jeg lige alt koden til dig...!? Er det sådan du vil have det?! ;)

[.:Ossi:.]
Avatar billede borrisholt Novice
26. september 2001 - 12:59 #7
Ja fordi så har jeg ogås en løsning ... Så Uploader jeg den til min HP så kan mange få glæde af den ....

Jens B
Avatar billede borrisholt Novice
26. september 2001 - 12:59 #8
Hvad er der i vejen med den ?

Jens B
Avatar billede ossi Nybegynder
04. november 2001 - 16:35 #9
Den passede bare ikke lige ind som jeg skulle bruge den... Der var lidt \"hakker\" i den da jeg bruger SynEdit - ikke Memo! Og den har et gitter i venstre side som der også skal tages højde for... men jeg har opgivet...!
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