Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Функция, распространяющаяся на множество форм У меня есть множество окон но везде нужна одна и та же функция UserName , определяющая имя пользователя. Каждый раз писать долго. Я попытался подключить файл functions, однако functions.UserName() ничего не выводит, помогите https://www.cyberforum.ru/ delphi-beginners/ thread670964.html Delphi StrToInt и Edit.text
Задание: Вычислить зарплату преподавателя с вычетом подоходного налога(13%) либо без него за указанный период (в часах) с учетом ставки почасовой оплаты: ассистент – 75 рублей/час, доцент – 150 рублей/час, профессор – 200 рублей/час. Перед Else выдаёт ошибки Unit4.pas(36): E2010 Incompatible types: 'string' and 'Integer' Unit4.pas(36): E2010 Incompatible types: 'string' and 'Integer' ...
Delphi Определить, принадлежит ли точка с координатами (X,Y) заштрихованной части плоскости Добрый день! Требуется написать программу: Заданы действительные числа X и Y. Определить, принадлежит ли точка с координатами (X,Y) заштрихованной части плоскости.(рис. Е) Не смог указать ОДЗ для левой части фигуры=( Заранее спасибо. https://www.cyberforum.ru/ delphi-beginners/ thread670898.html Delphi Матрица!Прошу рассмотреть Задана матрица K, содержащая n строк и m столбцов. Седловой точкой этой матрицы назовем элемент, который одновременно является минимумом в своей строке и максимумом в своем столбце. Найдите количество седловых точек заданной матрицы. Формат входных данных Первая строка содержит целые числа n и m (1 ≤ n, m ≤ 750). Далее следуют n строк по m чисел в каждой. j-ое число i-ой... https://www.cyberforum.ru/ delphi-beginners/ thread670896.html
Delphi Задали одномерный массив целых чисел, определить, есть ли в нем элемент со значением К
Задано одновимірний масив цілих чисел, визначити, чи є у ньому елемент із значенням К. Використати цикл while. Та визначити номер елементу К Задали одномерный массив целых чисел, определить, есть ли в нем элемент со значением К. Использовать цикл while. И определить номер елемента К
Delphi DateTimePicker, нуль в двузначном значении https://www.cyberforum.ru/ delphi-beginners/ thread670861.html
Приветствую. Использую компонент DateTimePicker. Формат даты у него 1/9/2012. Как можно добиться формата 01/09/2012? Добавлено через 1 час 3 минуты Разобрался. В свойстве формат: MM.dd.yyyy А если понадобится строке присвоить, то - DateTimeToString(Mystr,'mm/dd/yyyy',DateTimePicker1.Date); (Это при настройках даты месяц/день/год)
Delphi Почему не записывает в файл ? procedure TForm1.Button1Click(Sender: TObject); const Fn1='file1.txt'; Fn2='file2.txt'; var f1,f2:TextFile; nmb:Integer; begin AssignFile(f1,Fn1); Reset(f1); https://www.cyberforum.ru/ delphi-beginners/ thread670746.html Передача строки в dll Delphi
событие в программе procedure TForm9.Button3Click(Sender: TObject); var dan:PChar; dan:='123'; //как передать в функцию переменную dan? //как получить от функции переменную sum после обработки функции dll
Delphi Удалить четные числа прочесть с файла числа, и удалить четные, после этого результат записать в новый файл https://www.cyberforum.ru/ delphi-beginners/ thread670654.html Delphi Скрыть иконку программы в ALT+TAB и панели задач Привет всем :) ! Плиз прошу помощи ситуация такая скрыл форму из панели задач ShowWindow(Application.Handle, SW_HIDE); Форма скрылась с работает норм. Но в ALT+TAB много иконок убрал иконки так ShowWindow(Handle, SW_HIDE); ShowWindow(Application.Handle, SW_HIDE); В XP все работает, а вот в Win 7 по ALT+TAB так и осталось много иконок, что делать, как убрать, выглядит это ужасно :( https://www.cyberforum.ru/ delphi-beginners/ thread670652.html
Delphi Движение кораблика по форме
Здравствуйте! Есть программа на которой двигается кораблик: Нужно, чтобы он доходил до конца формы и затем двигался обратно. Вроде бы нашел решение, но в итоге получается вот такая вот штука: unit ship; interface
Delphi Копирование и перемещение файлов формата HTML вместе со связанными файлами и выделение слов, указанных в <TITLE> https://www.cyberforum.ru/ delphi-beginners/ thread670521.html
Есть файловый менеджер(простой), и это должно быть одной из его функций. Помогите, пожалуйста, с кодом.
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
14.10.2012, 18:15 0

Проблемы при ручном создании компонента - Delphi - Ответ 3560510

14.10.2012, 18:15. Показов 1377. Ответов 9
Метки (Все метки)

Ответ

через ImageList

вот пример

- Кнопка с рисунком из TImageList
- Картинка основная, при наведении, при нажатии, при отключении

ImageList: TImageList
ImageIndex: Integer // Картинка основная
ImgIndHover: Integer // Картинка при наведении
ImgIndDown: Integer // Картинка при нажатии
ImgIndDisabled: Integer // Картинка при отключении

Delphi
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
unit ImgListBtnUnit;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, ImgList;
 
type
  TImageListBtn = class(TGraphicControl)
  private
    { Private declarations }
    FImageIndex: Integer;
    FImageList: TImageList;
    FImgIndHover: Integer;
    FImgIndDown: Integer;
    FImgIndDisabled: Integer;
    procedure SetImageIndex(const Value: Integer);
    procedure SetImageList(const Value: TImageList);
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
    procedure EvMouseEnter(var Msg: TMessage); message CM_MouseEnter; // мышь в зоне
    procedure EvMouseLeave(var Msg: TMessage); message CM_MouseLeave; // мышь вне зоны
    procedure SetImgIndDisabled(const Value: Integer); 
  protected
    { Protected declarations }
    down: boolean;
    hover: boolean;
    procedure Paint; override;
    procedure EvMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
    procedure EvMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
     property Align;
     property Color;
     property Enabled;
     property ParentColor;
     property Visible;
     property OnClick;
      //property OnContextPopup;
     property OnDblClick;
      //property OnMouseActivate;
      //property OnMouseDown;
      //property OnMouseEnter;
      //property OnMouseLeave;
      //property OnMouseMove;
      //property OnMouseUp;
 
    { Published declarations }
    property ImageList: TImageList read FImageList write SetImageList;
    property ImageIndex: Integer read FImageIndex write SetImageIndex Default -1;
    property ImgIndHover: Integer read FImgIndHover write FImgIndHover Default -1;
    property ImgIndDown: Integer read FImgIndDown write FImgIndDown Default -1;
    property ImgIndDisabled: Integer read FImgIndDisabled write SetImgIndDisabled Default -1;
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Samples', [TImageListBtn]);
end;
 
{ TGlyph }
constructor TImageListBtn.Create(AOwner: TComponent);
begin
  inherited;
  FImageIndex := -1;
  FImgIndHover:= -1;
  FImgIndDown:= -1;
  FImgIndDisabled:= -1;
  hover:=false;
  down:=false;
  self.OnMouseDown:=self.EvMouseDown;
  self.OnMouseUp:=self.EvMouseUp;
  Color:=clBlack;
end;
 
procedure TImageListBtn.EvMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if csDesigning in ComponentState then exit;
  if Button<>mbLeft then exit;
  down:=true;
  Repaint;
end;
 
procedure TImageListBtn.EvMouseEnter(var Msg: TMessage);
begin
  if csDesigning in ComponentState then exit;
  hover:=true;
  Repaint;
end;
 
procedure TImageListBtn.EvMouseLeave(var Msg: TMessage);
begin
  if csDesigning in ComponentState then exit;
  hover:=false;
  down:=false;
  Repaint;
end;
 
procedure TImageListBtn.EvMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if csDesigning in ComponentState then exit;
  if Button<>mbLeft then exit;
  down:=false;
  Repaint;
end;
 
procedure TImageListBtn.Paint;
begin
  if Assigned(FImageList) and (FImageIndex>=0) then begin
    with FImageList do
      if Enabled then begin
         if down and (FImgIndDown>=0) then Draw(Self.Canvas, 0, 0, FImgIndDown)
         else
         if hover and (FImgIndHover>=0) then Draw(Self.Canvas, 0, 0, FImgIndHover)
         else
         if FImageIndex>=0 then Draw(Self.Canvas, 0, 0, FImageIndex);
      end else
         if FImgIndDisabled>=0 then Draw(Self.Canvas, 0, 0, FImgIndDisabled)
         else
         if FImageIndex>=0 then Draw(Self.Canvas, 0, 0, FImageIndex);
  end else // компонент в режиме Desing
    if csDesigning in ComponentState then begin
      Canvas.Brush.Style:=bsClear;
      Canvas.Pen.Style:=psDot;
      Canvas.Pen.Width:=1;
      // color Reverse
      Canvas.Pen.Color:=Color;
      Canvas.Rectangle(0,0,Width,Height);
    end else inherited;
end;
 
procedure TImageListBtn.SetImageIndex(const Value: Integer);
begin
  FImageIndex := Value;
  Repaint;
end;
 
procedure TImageListBtn.SetImageList(const Value: TImageList);
begin
  FImageList := Value;
  if Assigned(FImageList) then
  begin
    Self.Width := FImageList.Width;
    Self.Height := FImageList.Height;
  end;
end;
 
procedure TImageListBtn.SetImgIndDisabled(const Value: Integer);
begin
  FImgIndDisabled := Value;
  Repaint;
end;
 
procedure TImageListBtn.WMSize(var Message: TWMSize);
begin
  if Assigned(FImageList) then
  begin
    if Message.Width > FImageList.Width then
      Message.Width := FImageList.Width;
    if Message.Height > FImageList.Height then
      Message.Height := FImageList.Height;
  end;
  inherited;
end;
 
end.


Вернуться к обсуждению:
Проблемы при ручном создании компонента Delphi
Миниатюры
Проблемы при ручном создании компонента  
Вложения
Тип файла: zip ImageListButton.zip (328.8 Кб, 10 просмотров)
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2012, 18:15
Готовые ответы и решения:

Глюк при создании компонента динамически
При формировании таблицы в двах столбцах (m и h) динамически создаются компоненты edit. Но после...

Размер компонента webbrowser при динамичном создании TabSheet
Опытные програмисты помогите новичку. Сделал в дельфи свой браузер, с динамичным созданием...

События для формы при создании нового компонента
Здравсвуйте. Создал новый компонент на основе Tbutton. TnewButton = class(TButton). Для него...

access veolation - при создании на mdi form компонента
В мди приложении создаеться форма на которой в процесс е создания формы происходи т созданеи...

9
14.10.2012, 18:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2012, 18:15
Помогаю со студенческими работами здесь

Как снять выделение с компонента Tedit при создании формы?
Например есть форма ввода информацию о сотруднике. Когда откроется эта форма компонент TEdit (тут...

Глюк при создании собственного компонента
Создал свой компонент, в нем создал поле типа TEdit, далее при работе с этим компонентом в...

Заполнение ComboBox при создании компонента
Первый раз пишу компонент, не могу разобраться. Основа TChart, в него вклеиваю TComboBox. Создаю...

Ошибка при создании компонента TIBTransaction
Сегодя весь день сражаюсь с ibx, lazarus, ibexpert. После того, как наконец удалось установить ibx,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru