![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Image и ScrollBar
Ender © (2002-09-13 20:01:00)Уважаемые мастера, как сделать так, чтоб при изминении Position
ScrollBar"а битмап в Image смещался соответствующим образом, как например в MS Paint?
Ender (2002-09-14 00:24:00) [1]Спасибо всем :)
mukha (2002-09-13 23:00:00) [2]Всё таки TImage и TScrollBar имеют преимущество перед TScrollBox.
Вот пример (код рабочий, проверил):
</unit Unit1;
interface
uses
Windows, Jpeg, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
ScrollBarHor: TScrollBar;
ScrollBarVert: TScrollBar;
procedure FormCreate(Sender: TObject);
procedure ScrollBarHorChange(Sender: TObject);
procedure ScrollBarVertChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.Caption:="";
Image1.Autosize:=true;
Image1.Align:= alNone;
ScrollBarHor.Min:=0;
ScrollBarVert.Min:=0;
Image1.Picture.LoadFromFile("C:\Delphi5\Projects\A\Фото.jpg");
ScrollBarHor.Max:=Image1.Picture.Width-Panel1.Width;
ScrollBarvert.Max:=Image1.Picture.Height-Panel1.Height;
end;
procedure TForm1.ScrollBarHorChange(Sender: TObject);
begin
Image1.Left:=-ScrollBarHor.Position;
end;
procedure TForm1.ScrollBarVertChange(Sender: TObject);
begin
Image1.Top:=-ScrollBarVert.Position;
end;
end.CODE>
softland (2002-09-13 20:27:00) [3]Вот черт, действительно прав TTCustomDelphiMaster, надо TScrollBox :-( извините.
softland (2002-09-13 20:25:00) [4]Кладешь на форму sb : TScrollBar; в него кладешь im : TImage;
в инспекторе у im устанавливаешь ширину и высоту своего рисунка, конечно можно и в run time. Если размер рисунка больше чем у sb, то он будет скролинговаться, вроде всё...
Или я чего-то не понял???
TTCustomDelphiMaster (2002-09-13 20:22:00) [5]Используйте ScrollBox
Алексей Ким (2002-09-13 20:08:00) [6]s - timage, panel1 - рамка, sb - scroolbar
s.Left := panel1.Width-round((sb.Position / sb.Max) * panel1.Width);
ну сам доделаешь толька это придумал