Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.04 c
2-1161607652
atruhin
2006-10-23 16:47
2006.11.05
Сравнение событий Onxxxx


15-1161033290
Ученик чародея
2006-10-17 01:14
2006.11.05
Американский ученый опасается, что инопланетяне взломают Интернет


15-1160918158
PHPDeveloper
2006-10-15 17:15
2006.11.05
издатели дисков на территории СНГ


15-1160987619
Juice
2006-10-16 12:33
2006.11.05
Средство разработки на Java


3-1157621718
NotGooDP
2006-09-07 13:35
2006.11.05
Триггеры в MsSQL