Вопрос Скролбар в TNewMemo (Решено)

Хамик

Старожил
Как в компоненте TNewMemo во время формирования списка зафиксировать нижний скролбар в крайнем левом положении?
Сейчас он перемещается согласно концу последней строки.

Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
var
  NewMemo1: TNewMemo;
  NewButton1: TNewButton;

procedure StartF(Sender: TObject); forward;

procedure RedesignWizardForm;
begin
  with WizardForm.WelcomeLabel2 do
  begin
    Top := ScaleY(70);
    Height := ScaleY(1);
  end;

  with WizardForm.WelcomeLabel1 do
  begin
    Top := ScaleY(15);
    Height := ScaleY(1);
  end;

  { NewMemo1 }
  NewMemo1 := TNewMemo.Create(WizardForm);
  with NewMemo1 do
  begin
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(176);
    Top := ScaleY(128);
    Width := ScaleX(181);
    Height := ScaleY(177);
    Lines.Text := '[Start]';
    ScrollBars := ssBoth;
  end;

  { NewButton1 }
  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do
  begin
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(272);
    Top := ScaleY(80);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'Start';
    OnClick := @StartF;
  end;

  NewMemo1.TabOrder := 2;
  NewButton1.TabOrder := 3;

{ ReservationBegin }
  // Вы можете добавить ваш код здесь.

{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!

procedure GetAllFilesName(SearchInDir: string);
var
  FSR: TFindRec;
  FindResult: Boolean;
  res:string;
begin
  FindResult:= FindFirst(AddBackslash(SearchInDir)+'*.*', FSR);
    while FindResult do
      begin
        //if (FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY then
          if not (FSR.Name = '.') and not (FSR.Name = '..') then
          begin
            res := AddBackslash(SearchInDir)+FSR.Name;
            NewMemo1.Lines.Add(res);
          end;
            FindResult:= FindNext(FSR);
      end;
  FindClose(FSR);
end;

procedure StartF(sender:tobject);
begin
  GetAllFilesName(ExpandConstant('{pf}'));
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
 

Nemko

Дилетант
Модератор
Хамик, послать сообщение компоненту - для изменение позиции прокрутки. По хорошему сделать проверку на несоответствие начальной позиции (GetScrollPos WinApi), а потом уже посылать Msg окну, дабы через цикл не перегружать прорисовкой листа.
Код:
const
  WM_HSCROLL  = 276;
  SB_LEFT     = 6;

procedure GetAllFilesName(SearchInDir: String);
var
  FSR: TFindRec;
  FindResult: Boolean;
  res: String;
begin
  FindResult:=FindFirst(AddBackslash(SearchInDir)+'*.*', FSR);
    while FindResult do begin
      if not (FSR.Name = '.') and not (FSR.Name = '..') then begin
        res:=AddBackslash(SearchInDir)+FSR.Name;
        NewMemo1.Lines.Add(res);
        SendMessage(NewMemo1.Handle, WM_HSCROLL, SB_LEFT , 0);
      end;
      FindResult:= FindNext(FSR);
    end;
  FindClose(FSR);
end;
 
Сверху