Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2009, 11:10   #1
Grisha248
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 15
По умолчанию Помощь в навигации (Дельфи)

Необходимо создать кнопку по нажатию на которую происходило бы перемещение вверх или вниз по списку в Memo
Grisha248 вне форума Ответить с цитированием
Старый 23.06.2009, 12:35   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Это можно сделать так:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button_Up: TButton;
    Button_Down: TButton;
    procedure Button_UpClick(Sender: TObject);
    procedure Button_DownClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Get_Scroll_Info(Control: TWinControl; var si: tagSCROLLINFO);
begin
  si.cbSize := Sizeof(tagSCROLLINFO);
  si.fMask := SIF_ALL;

  GetScrollInfo(Control.Handle, SB_VERT, si);
end;

procedure Set_Scroll_Info(Control: TWinControl; si: tagSCROLLINFO);
var
  wParam: Integer;
begin
  SetScrollInfo(Control.Handle, SB_Vert, si, true);

  wParam := si.nPos;
  wParam := wParam shl 16;
  wParam := wParam + SB_THUMBTRACK;

  SendMessage(Control.Handle, WM_VSCROLL, wParam, 0);

  Control.Refresh;
end;

procedure Move_Scroll(Control: TWinControl; d: Integer);
var
  si: tagSCROLLINFO;
begin
  Get_Scroll_Info(Control, si);

  si.nPos := si.nPos + d; // смещение позиции на d

  Set_Scroll_Info(Control, si);
end;

procedure TForm1.Button_UpClick(Sender: TObject);
begin
  Move_Scroll(Memo1, -1);  // смещение вверх
end;

procedure TForm1.Button_DownClick(Sender: TObject);
begin
  Move_Scroll(Memo1, 1);  // смещение вниз
end;

end.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается дельфи L_M Общие вопросы Delphi 3 21.04.2013 07:17
Язык программирования программ навигации Diabler Свободное общение 0 05.03.2009 13:23
Нужна помощь! Нужно переделать программу написанную на дельфи, чтобы она работала под управлением Vista Karloss Фриланс 5 10.11.2008 17:14
двумерка в дельфи Puffy Помощь студентам 4 13.05.2008 01:04