title image


Smiley Re: TMemo und Scroll-Leisten
eine erste Idee dazu:



var

merk, sichtbar: integer;



procedure laddatei(m: TMemo; f: TFilename; s: TScrollbar);

begin

s.position := 0;

m.lines.loadfromfile(f);

end;



procedure makemax(s: TScrollbar; m: TMemo);

var hlp: integer;

begin

hlp := m.lines.count - sichtbar + 1;

if hlp then s.Max := 0 else

s.Max := m.lines.count - sichtbar;

end;



procedure TFormx.FormCreate(Sender: TObject);

var

tmp: TCanvas;

dc: hdc;

begin

merk := -1;

Memo1.scrollbars := ssNone;

Memo1.WantReturns := true;

Memo1.WordWrap := false; // Bedingung

dc := GetDc(Memo1.handle);

tmp := TCanvas.create;

tmp.handle := dc;

tmp.font := Memo1.font;

with ScrollBar1 do begin

Min := 0;

Kind := sbVertical;

top := Memo1.top + 1;

height := memo1.height - 2;

left := Memo1.left + memo1.clientwidth + 2;

sichtbar := Memo1.clientheight div tmp.textheight('Dummy');

makemax(scrollbar1, Memo1);

end;

tmp.free;

releasedc(Memo1.handle, dc);

end;



procedure TFormx.ScrollBar1Change(Sender: TObject);

var x, z: integer;

begin

Memo1.selstart := 0;

if merk > scrollbar1.position then z := -1 else z := sichtbar - 2;

for x := 0 to scrollbar1.Position + z do

Memo1.selstart := Memo1.selstart + length(Memo1.lines[x]) + 2;

Memo1.Perform(EM_SCROLLCARET, 0, 0);

merk := scrollbar1.position;

end;



procedure TFormx.Memo1Change(Sender: TObject);

begin

makemax(scrollbar1, Memo1);

end;



procedure TFormx.Button4Click(Sender: TObject);

begin

laddatei(memo1, 'c:\test.txt', scrollbar1);

end;





gruss DBR
Eine Stunde denken spart zehn Stunden programmieren!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: