Главная страница
    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.5 MB
Время: 0.05 c
15-1160758042
Chort
2006-10-13 20:47
2006.11.05
каким образом можно создать файл .chm или .hlp


15-1161079948
Empleado
2006-10-17 14:12
2006.11.05
Интересно, через какое время оно придет в каждый дом?


2-1161620422
Alral
2006-10-23 20:20
2006.11.05
Определение нажатия клавиши.


2-1161504506
m-kirill-2003
2006-10-22 12:08
2006.11.05
Имя пользователя


15-1160997723
DillerXX
2006-10-16 15:22
2006.11.05
Лобанов Александр - "Жестокая Голактика"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский