Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизDrag&Drop Найти похожие ветки
← →
Sergey_b (2006-10-18 11:41) [0]Всем привет!
На форме есть панель, на ней тулбар и оле. Надо панель перетаскивать, но вся ее площадь закрыта баром и оле. Как за нее уцепиться? Оставлять свободное место не получается - алигн у оле - клиент. Что делать?
← →
Percent (2006-10-18 11:44) [1]Как за нее уцепиться?
"Цепляйся" за "бар"...
← →
Sergey_b (2006-10-18 11:45) [2][1]
Я не знаю как
← →
Elen © (2006-10-18 11:53) [3]
> Sergey_b
У тулбара тоже есть события DragDrop. Используй их группу
← →
Sergey_b (2006-10-18 11:57) [4]
> Elen © (18.10.06 11:53) [3]
Можно пример
← →
Elen © (2006-10-18 12:11) [5]
> Sergey_b
Сначала поподробнее - куда перетаскивать и зачем
← →
Sergey_b (2006-10-18 12:13) [6]В оле отображается картинка(точнее чертеж), чтобы его посмотреть по-подробнее надо растянуть ее(картинку) на весь экран, ну, или на поверхность по-больше.
← →
Elen © (2006-10-18 12:20) [7]
> Sergey_b
Хо. Так тебе нужно картинку таскать?
← →
Sergey_b (2006-10-18 12:24) [8]
> Elen © (18.10.06 12:20) [7]
Картинку вместе с тулбаром, потому что есть четыре формата картинок - jpg, cdw, spw, a3d(посл. три - чертежи) и может потребоваться посмотреть каждый из них.
← →
Sergey_b (2006-10-18 12:29) [9]
> Elen © (18.10.06 12:20) [7]
> Хо. Так тебе нужно картинку таскать?
Ну, а как одну картинку?
← →
Elen © (2006-10-18 12:33) [10]Попробуй так :
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:40) [11]
> Elen © (18.10.06 12:33) [10]
работает, но не так, как хотельость бы.
Механизм включается, но панель не становится окошком, т.е. размеры ее изменить нельзя. И вопрос - почему нужны эти события, если они ничего не делают?
← →
Elen © (2006-10-18 12:46) [12]
> но панель не становится окошком
Хе. И не станет. Для этого попробуй MDI. А про события почитай в хелпе
← →
Игорь Шевченко © (2006-10-18 13:05) [13]
> Надо панель перетаскивать, но вся ее площадь закрыта баром
> и оле. Как за нее уцепиться? Оставлять свободное место не
> получается - алигн у оле - клиент.
1. Не использовать Align, а использовать Anchors, оставляя место для панели, чтобы зацепиться.
2. Для панели поставь DragMode=dmAutomatic, DragKind=dkDock - панель сможет становиться окном, но обратно в "не-окно", она уже не преобразуется. Чтобы сделать по уму, читай про Docking и смотри пример в \Program Files\Delphi\Demos\Docking
Elen © (18.10.06 12:46) [12]
Если у тебя есть фонтан, заткни его. Дай отдохнуть и фонтану.
(с) Козьма Прутков.
← →
Sergey_b (2006-10-18 13:16) [14]
> Игорь Шевченко © (18.10.06 13:05) [13]
> но обратно в "не-окно", она уже не преобразуется.
Да ну?
← →
Игорь Шевченко © (2006-10-18 13:22) [15]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
Пробуй, твори, выдумывай
← →
Elen © (2006-10-18 13:27) [16]
> Игорь Шевченко
Грубить изволите-с!
← →
Игорь Шевченко © (2006-10-18 13:43) [17]Elen © (18.10.06 13:27) [16]
> Грубить изволите-с!
Изволим-с. Если человек не понимает, что в конференции "Начинающим" желательно давать провернный на собственном опыте на вопрос.
← →
Elen © (2006-10-18 13:45) [18]
> Игорь Шевченко
Ну ка поподробнее. Это чем же мои советы не угодили?
← →
Игорь Шевченко © (2006-10-18 13:50) [19]Elen © (18.10.06 13:45) [18]
А ты переписку почитай, меня спрашивать не надо, спрашивай автора.
И оффтопик завязываем.
← →
Sergey_b (2006-10-18 13:55) [20]
> > Игорь Шевченко
>
> Грубить изволите-с!
Извини, скажу по-другому: СТАНОВИТСЯ.
← →
MsGuns © (2006-10-18 13:59) [21]>Elen © (18.10.06 13:45) [18]
>Ну ка поподробнее. Это чем же мои советы не угодили?
1. Не имеют прямого отношения к поставленному вопросу.
2. Дают неверный или неточный ответ, не позволяющий правильно решить описанную в сабже проблему.
3. Несут побочную, не имеющую к сабжу информацию, могущую увести в сторону от проблемы или имеющие целью обойти проблему, но не решить ее.
← →
Elen © (2006-10-18 14:01) [22]
> Игорь Шевченко
Мне думается автор хочет сделать PAN-прокрутку чтоб картинку таскать в окне. А превращение с панелью будет скорей всего неудобным для такой работы. Помоему здесь нужно применять увеличение изображения (для детального просмотра) и его масштабирование как это сделано в Автокаде, где экран можно перемешать рукой
← →
Sergey_b (2006-10-18 14:36) [23]
> Elen © (18.10.06 14:01) [22]
На форме помимо указанного есть еще компоненты, поэтому размер картинки получается маленький. Нужно, чтобы панель, на которой располагается олеш-ка и тулбар делались... ну вот так:
Form.DockSite = True;
Form.DragMode = dmAutomatic
Panel.Kind = dkDock
Panel.DragMode = dmAutomatic
а потом уже растягивать получившееся окно и, ес-но, прокручивать и масштабировать.
Мне кажется, что вопрорс достаточно тривиальный. Ну, а может быть, и нет?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c