Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.042 c
2-1161165985
Samson
2006-10-18 14:06
2006.11.05
MDI приложение, выравнивание дочерних окон


2-1161678823
Crazybeaver
2006-10-24 12:33
2006.11.05
Popupmenu над кнопкой


11-1137545458
-=Mike=-
2006-01-18 03:50
2006.11.05
Обработка исключений


2-1161188335
fog
2006-10-18 20:18
2006.11.05
Печать графики


2-1161344478
Виктор1111
2006-10-20 15:41
2006.11.05
Аналог db 0 dup(2000)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский