Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2011, 20:45   #1
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию Получить дескриптор окна для выбора цвета

Как узнать хэндл окошка?

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  BasicColors = [$00, $40, $80, $A0, $C0, $FF];
begin
  with TColorDialog.Create(Application) do
  begin
    if (GetRValue(Color) in BasicColors) and
      (GetGValue(Color) in BasicColors) and
      (GetBValue(Color) in BasicColors) then
        begin
      Options := Options - [cdFullOpen];
    end
    else
    begin
      Options := Options + [cdFullOpen];
    end;
    Execute;
 Caption := IntToStr(Color);
 Free;
  end;
end;
Тоба вне форума Ответить с цитированием
Старый 06.08.2011, 20:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Какого? ColorDialog-овского?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2011, 20:52   #3
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию

Естественно.
Тоба вне форума Ответить с цитированием
Старый 06.08.2011, 21:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  BasicColors = [$00, $40, $80, $A0, $C0, $FF];
Var HandleMe:HWND;
begin
  with TColorDialog.Create(Application) do
  begin
   HandleMe:=Handle;
...
Таки у него есть свойство нужное, его и юзай
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2011, 22:07   #5
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию

HandleMe/Handle - это хэндл главного окна,
а надо узнать хэндл ColorDialogа,например чтоб показать его в произвольном месте экрана или изменить его стиль на ToolWindow и т.д.
Тоба вне форума Ответить с цитированием
Старый 06.08.2011, 22:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это хэндл главного окна
Да что ты... Ану-ка докажи
А я потом тебе скажу всего четыре буквы: W I T и H, и посмотрим кто прав
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.08.2011, 00:00   #7
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию

А разве в данном случаи Handle не будет иметь статус дескриптора вызывающего окна?
Стоп,что-то я запутался.
Ну а как допустим открыть наш диалог(например через MoveWindow) в произвольном месте десктопа,
Если Вас не затруднит покажите пожалуйста.

Последний раз редактировалось Тоба; 07.08.2011 в 05:06.
Тоба вне форума Ответить с цитированием
Старый 20.08.2011, 17:02   #8
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию

Неужели никто не знает, как открыть ColorDialog не по центру, а в произвольном месте экрана ???
Тоба вне форума Ответить с цитированием
Старый 20.08.2011, 19:33   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну почему же не знает, знает. Просто занят другой работой
Вот. Смотри... Пяточек:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    ColorDialog1: TColorDialog;
    procedure FormCreate(Sender: TObject);
    procedure ColorDialog1Show(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 ColorDialog1.Execute
end;

procedure TForm1.ColorDialog1Show(Sender: TObject);
begin    Randomize;
 MoveWindow(ColorDialog1.Handle,random(1000),random(1000),600,400,true);
end;

end.
P.S. Кстати, никто не знает что это за пасхалочка такая в этом диалоге?
Изображения
Тип файла: jpg Безымянный.JPG (75.7 Кб, 145 просмотров)
I'm learning to live...

Последний раз редактировалось Stilet; 20.08.2011 в 19:37.
Stilet вне форума Ответить с цитированием
Старый 20.08.2011, 20:31   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

это скорее всего Button &Справка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить дескриптор дочернего окна Crudelis Win Api 1 15.10.2010 21:45
Получить дескриптор окна другого приложения и сделать его активным Delphi 7 AndersX Помощь студентам 4 18.10.2009 09:32
Дескриптор окна DeFace Win Api 10 11.10.2009 16:52
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47