![]() |
![]() ![]() ![]() | |
|
Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|| Форумы Здесь вы можете задать свой вопрос и наверняка получите ответ |
ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
| ||
![]() | ||
|
Чтобы не потерять эту дискуссию, сделайте закладку
« предыдущая ветвь | форум | следующая ветвь »
PageScroller "правильная прокрутка"
Саня © (16.03.19 18:39)Добрый вечер, хочу сделать примерно такую прокрутку, как на палитре компонентов Delphi 7. Задача чтобы:
1) Стрелки прокрутки влево\право не всплывали поверх кнопок - этот пункт работает.
2) Прокрутка была кратна ширине кнопки.
Впервые пришлось сегодня с таким повозится.
Вперед крутит как положено на 32px, а назад на 48px, что у меня не правильно?
Вот набросал примерчик:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ExtCtrls,
Vcl.Buttons;
type
TForm1 = class(TForm)
PageScroller1: TPageScroller;
Button1: TButton;
Panel1: TPanel;
procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer;
var Resize: Boolean);
procedure FormCreate(Sender: TObject);
procedure PageScroller1Scroll(Sender: TObject; Shift: TShiftState; X,
Y: Integer; Orientation: TPageScrollerOrientation; var Delta: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
N: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
//ширина срелочек влево/право
PageScroller1.ButtonSize := 16;
//счетчик кнопок
N := 0;
end;
procedure TForm1.PageScroller1Scroll(Sender: TObject; Shift: TShiftState; X,
Y: Integer; Orientation: TPageScrollerOrientation; var Delta: Integer);
begin
//на ширину кнопки
Delta := 32;
end;
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
//ширина PageScroller всегда крата ширине кнопок (32 px)
PageScroller1.Width := Form1.ClientWidth div 32 * 32;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SB: TSpeedButton;
begin
//добавляем кнопки в ряд одна за одной
SB := TSpeedButton.Create(Panel1);
SB.Parent := Panel1;
SB.Caption := IntToStr(N);
SB.Flat := True;
SB.SetBounds(N * 32 + PageScroller1.ButtonSize, 0, 32, 32);
Inc(N);
Panel1.Width := N * 32 + PageScroller1.ButtonSize * 2;
end;
end.
Саня © (16.03.19 20:12) [1]тысяча извинений.
procedure TForm1.PageScroller1Scroll(Sender: TObject; Shift: TShiftState; X,
Y: Integer; Orientation: TPageScrollerOrientation; var Delta: Integer);
begin
if (Delta > 0) then
Delta := 32
else
Delta := -32;
end;
Разрешается использование тегов форматирования текста:
версия для печати
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)
|
![]() ![]() ![]() |