Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.04.2015, 18:12
Anton93 Anton93 вне форума
Прохожий
 
Регистрация: 20.02.2015
Сообщения: 27
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Изменить цвет Edit

Подскажите пожалуйста, как изменить цвет Static компонента, а точнее Edit в WINAPI. Нужно сделать фон у Edit черный, а буквы белыми (примерно как в CMD)Знаю что делается через сообщение WM_CTLCOLORSTATIC, но все примеры на C++, и в этом проблема, в нем я не силен. Нужно на Delphi.
Ответить с цитированием
  #2  
Старый 02.04.2015, 18:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

нужно обрабатывать WM_CTLCOLOREDIT:
Код:
1
2
3
4
5
6
7
8
9
function WindowProc(hwnd: HWND; Msg: Integer;
  wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
begin
  case Msg of
    WM_CTLCOLOREDIT: begin
      SetBkColor(wParam, $00);
      SetTextColor(wParam, $ffffff);
      Result:=GetStockObject(BLACK_BRUSH);
    end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 02.04.2015, 19:15
Anton93 Anton93 вне форума
Прохожий
 
Регистрация: 20.02.2015
Сообщения: 27
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
нужно обрабатывать WM_CTLCOLOREDIT:
Код:
1
2
3
4
5
6
7
8
9
function WindowProc(hwnd: HWND; Msg: Integer;
  wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
begin
  case Msg of
    WM_CTLCOLOREDIT: begin
      SetBkColor(wParam, $00);
      SetTextColor(wParam, $ffffff);
      Result:=GetStockObject(BLACK_BRUSH);
    end;
что не то, вот код

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
program Project1;
 
uses
   Windows, Messages;
  {$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED}
 
const
  Memo_1 = 100;
 
var
  MSG: TMSG;
  WC: TWndClass;
  hWindow, Memo: HWND;
 
function WndProc(hWnd: HWND; Msg: UINT; WParam: Integer; lParam: Integer): Integer; stdcall;
begin
  Result:=0;
  case msg of
    WM_CTLCOLOREDIT:
      begin
        SetBkColor(wParam, $00);
        SetTextColor(wParam, $ffffff);
        Result:=GetStockObject(BLACK_BRUSH);
      end;
    WM_DESTROY:
      begin
        PostQuitMessage(0);
        Exit;
      end;
  Result := DefWindowProc(hWnd, Msg, WParam, LParam);
end;
 
procedure CreateWindow;
begin
  FillChar(WC, SizeOf(TWndClassEx), 0);
  WC.lpszClassName := 'Window';
  WC.lpfnWndProc := @WndProc;
  WC.hbrBackground := 1;
  WC.hCursor := LoadCursor(0, IDC_ARROW);
  RegisterClass(WC);
  hWindow := CreateWindowEx(0,
                            WC.lpszClassName,//Имя класса окна
                            nil{Имя окна},
                            WS_VISIBLE or WS_DLGFRAME,//Стиль
                            200,300,400,200,
                            0,
                            0,
                            hInstance,//Описатель приложения, с которым окно связывается
                            nil);
  Memo := CreateWindowEx(WS_EX_CLIENTEDGE,
                         'Edit',
                         nil,
                         WS_CHILD or WS_VISIBLE or WS_VSCROLL or ES_AUTOHSCROLL or ES_MULTILINE or ES_WANTRETURN,
                         10, 10, 300, 100,
                         hWindow,
                         Memo_1,
                         hInstance,
                         nil);
  sendmessage(Memo, EM_REPLACESEL, 0, longword(pchar('Сообщение: '+#13#10)));
  ShowWindow(hWindow, SW_SHOW);//Показать окно
  UpDateWindow(hWindow);//Обновления окна
end;
//============================Конец "Создание формы"============================
 
begin
  CreateWindow;
  while GetMessage(MSG, 0, 0, 0) do
    begin
      TranslateMessage(MSG);
      DispatchMessage(MSG);
    end;
end.
Ответить с цитированием
  #4  
Старый 02.04.2015, 21:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Всё то, только для вашего варианта пропущена команда.
Код:
1
2
3
4
5
6
7
WM_CTLCOLOREDIT:
      begin
        SetBkColor(wParam, $00);
        SetTextColor(wParam, $ffffff);
        Result:=GetStockObject(BLACK_BRUSH);
        Exit;
      end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 02.04.2015, 21:55
Anton93 Anton93 вне форума
Прохожий
 
Регистрация: 20.02.2015
Сообщения: 27
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Большое спасибо все работает)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025