![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Drag&Drop
Sergey_b © (2006-10-18 11:41:00)Всем привет!
На форме есть панель, на ней тулбар и оле. Надо панель перетаскивать, но вся ее площадь закрыта баром и оле. Как за нее уцепиться? Оставлять свободное место не получается - алигн у оле - клиент. Что делать?
Sergey_b (2006-10-18 14:36:00) [1]
> Elen © (18.10.06 14:01) [22]
На форме помимо указанного есть еще компоненты, поэтому размер картинки получается маленький. Нужно, чтобы панель, на которой располагается олеш-ка и тулбар делались... ну вот так:
Form.DockSite = True;
Form.DragMode = dmAutomatic
Panel.Kind = dkDock
Panel.DragMode = dmAutomatic
а потом уже растягивать получившееся окно и, ес-но, прокручивать и масштабировать.
Мне кажется, что вопрорс достаточно тривиальный. Ну, а может быть, и нет?
Elen (2006-10-18 14:01:00) [2]
> Игорь Шевченко
Мне думается автор хочет сделать PAN-прокрутку чтоб картинку таскать в окне. А превращение с панелью будет скорей всего неудобным для такой работы. Помоему здесь нужно применять увеличение изображения (для детального просмотра) и его масштабирование как это сделано в Автокаде, где экран можно перемешать рукой
MsGuns (2006-10-18 13:59:00) [3]>Elen © (18.10.06 13:45) [18]
>Ну ка поподробнее. Это чем же мои советы не угодили?
1. Не имеют прямого отношения к поставленному вопросу.
2. Дают неверный или неточный ответ, не позволяющий правильнорешить описанную в сабже проблему.
3. Несут побочную, не имеющую к сабжу информацию, могущую увести в сторону от проблемы или имеющие целью обойти проблему, но не решить ее.
Sergey_b (2006-10-18 13:55:00) [4]
> > Игорь Шевченко
>
> Грубить изволите-с!
Извини, скажу по-другому: СТАНОВИТСЯ.
Игорь Шевченко (2006-10-18 13:50:00) [5]Elen © (18.10.06 13:45) [18]
А ты переписку почитай, меня спрашивать не надо, спрашивай автора.
И оффтопик завязываем.
Elen (2006-10-18 13:45:00) [6]
> Игорь Шевченко
Ну ка поподробнее. Это чем же мои советы не угодили?
Игорь Шевченко (2006-10-18 13:43:00) [7]Elen © (18.10.06 13:27) [16]
> Грубить изволите-с!
Изволим-с. Если человек не понимает, что в конференции "Начинающим" желательно давать провернный на собственном опыте на вопрос.
Elen (2006-10-18 13:27:00) [8]
> Игорь Шевченко
Грубить изволите-с!
Игорь Шевченко (2006-10-18 13:22:00) [9]Sergey_b (18.10.06 13:16) [14]
> Да ну?
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
ListView1: TListView;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
object Form1: TForm1
Left = 192
Top = 107
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 52
Top = 36
Width = 465
Height = 285
Caption = 'Panel1'
DragKind = dkDock
DragMode = dmAutomatic
TabOrder = 0
object ListView1: TListView
Left = 1
Top = 12
Width = 463
Height = 272
Anchors = [akLeft, akTop, akRight, akBottom]
Columns = <>
TabOrder = 0
end
end
end
Пробуй, твори, выдумывай
Sergey_b (2006-10-18 13:16:00) [10]
> Игорь Шевченко © (18.10.06 13:05) [13]
> но обратно в "не-окно", она уже не преобразуется.
Да ну?
Игорь Шевченко (2006-10-18 13:05:00) [11]
> Надо панель перетаскивать, но вся ее площадь закрыта баром
> и оле. Как за нее уцепиться? Оставлять свободное место не
> получается - алигн у оле - клиент.
1. Не использовать Align, а использовать Anchors, оставляя место для панели, чтобы зацепиться.
2. Для панели поставь DragMode=dmAutomatic, DragKind=dkDock - панель сможет становиться окном, но обратно в "не-окно", она уже не преобразуется. Чтобы сделать по уму, читай про Docking и смотри пример в \Program Files\Delphi\Demos\Docking
Elen © (18.10.06 12:46) [12]
Если у тебя есть фонтан, заткни его. Дай отдохнуть и фонтану.
(с) Козьма Прутков.
Elen (2006-10-18 12:46:00) [12]
> но панель не становится окошком
Хе. И не станет. Для этого попробуй MDI. А про события почитай в хелпе
Sergey_b (2006-10-18 12:40:00) [13]
> Elen © (18.10.06 12:33) [10]
работает, но не так, как хотельость бы.
Механизм включается, но панель не становится окошком, т.е. размеры ее изменить нельзя. И вопрос - почему нужны эти события, если они ничего не делают?
Elen (2006-10-18 12:33:00) [14]Попробуй так :
1. Для Ole поставь DragMode:=dmAutomatik
2. Создай на форме события OnDockOver, OnDragDrop, OnDragOver, OnEndDock. Пусть они будут заполненны чем угодно. Но они должны быть определены в Юните
3. пропиши :
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
panel1.Top :=y;panel1.Left :=x;
end;
на Panel1 у тебя Ole.
Кажись так. Если что спрашивай.
Sergey_b (2006-10-18 12:29:00) [15]
> Elen © (18.10.06 12:20) [7]
> Хо. Так тебе нужно картинку таскать?
Ну, а как одну картинку?
Sergey_b (2006-10-18 12:24:00) [16]
> Elen © (18.10.06 12:20) [7]
Картинку вместе с тулбаром, потому что есть четыре формата картинок - jpg, cdw, spw, a3d(посл. три - чертежи) и может потребоваться посмотреть каждый из них.
Elen (2006-10-18 12:20:00) [17]
> Sergey_b
Хо. Так тебе нужно картинку таскать?
Sergey_b (2006-10-18 12:13:00) [18]В оле отображается картинка(точнее чертеж), чтобы его посмотреть по-подробнее надо растянуть ее(картинку) на весь экран, ну, или на поверхность по-больше.
Elen (2006-10-18 12:11:00) [19]
> Sergey_b
Сначала поподробнее - куда перетаскивать и зачем
Sergey_b (2006-10-18 11:57:00) [20]
> Elen © (18.10.06 11:53) [3]
Можно пример