Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Drag&Drop


Страницы:   1 2

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]

Можно пример


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо