Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  15:38[Войти] | [Зарегистрироваться]
Ответ на вопрос № 45847

13-10-2006 02:08
Здраствуите друзя! Я хачу перетаскивать из Explorer на Panel и сохранить Message. Может кто подскажет выход из сложившейся ситуации. Я попробовал так :
 


private
    procedure WMDROPFILES(var Msg: TWMDROPFILES); message WM_DROPFILES;



procedure TForm1.WMDropFiles(var Msg:TWMDropFiles);
var
filename:array[0..255] of char;
begin
  dragQueryfile(msg.Drop,0,filename,SIZEOF(filename));
    showmessage(filename);
  dragfinish(msg.drop);
end;




procedure TForm1.FormCreate(Sender: TObject);
begin
    DragAcceptFiles(Panel1.Handle, True );
end;



Но procedure WMDROPFILES не работает.

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

13-10-2006 05:39 | Сообщение от автора вопроса
Балишое Спасьба за фсео!

13-10-2006 05:34
А так работает?

unit Unit1;
...
type
  TPanel = class(ExtCtrls.TPanel)
  private
    procedure WMDROPFILES(var Msg: TWMDROPFILES); message WM_DROPFILES;
  end;

  TForm1 = class...
  public
    ...
  end;

implementation
...


13-10-2006 04:38 | Комментарий к предыдущим ответам
dragQueryfile возвращает в filename имя перетянутого файла.

13-10-2006 04:08
Дорогой друг, по моему у тебя переменная filename в 
procedure TForm1.WMDropFiles(var Msg:TWMDropFiles);имеет пустое значение а следовательно бесполезна. Либо ты не догоняешь чего-то, либо замохнулся на слона насосом.

13-10-2006 04:08
Да, и конечно не забыть описать OldPanelWinProc в private-секции формы:

  OldPanelWinProc: TWndMethod;



13-10-2006 04:06
Видите ли, вы реализовали обработчик события WM_DROPFILES для окна, а обозначили в качестве приемника панель. Естесственно, так работать не будет. Есть 3 варианта решения задачи:

1. Наследовать свой компонент TMyPanel от TPanel, в котором определить обработку WM_DROPFILES.
2. Создать Class Helper для TPanel с обработкой WM_DROPFILES. (не уверен, можно ли помещать обработчики событий в хелперы)
3. Переопределить оконную функцию для панели, в которой обрабатывать WM_DROPFILES.

Реализуем например 3-й метод:
В описании формы:

  private
    { Private declarations }
    procedure NewPanelWinProc(var Msg: TMessage);


В имплементации:

procedure TForm4.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Panel1.Handle, True);
  OldPanelWinProc := Panel1.WindowProc;
  Panel1.WindowProc := NewPanelWinProc;
end;

procedure TForm4.NewPanelWinProc(var Msg: TMessage);
var
  filename:array[0..255] of char;
begin
  if Msg.Msg = WM_DROPFILES then begin
    dragQueryfile(msg.WParam,0,filename,SIZEOF(filename));
      showmessage(filename);
    dragfinish(msg.WParam);
  end else OldPanelWinProc(Msg);
end;



Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Кто съел Красную шапочку?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования