1 / 1 / 0
Регистрация: 01.06.2011
Сообщений: 7

Не вызывается OnDrawTab у PageControl в Windows 7x64

30.06.2011, 18:54. Показов 3444. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi7
не вызывается OnOwnerDraw у PageControl в windows 7 x64(

Добавлено через 2 часа 17 минут
т.е. OnDrawTab )

Добавлено через 21 час 15 минут
с х64 проблема решена... вопрос снимается...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2011, 18:54
Ответы с готовыми решениями:

Поставить windows 7x64 на ноутбук с windows 8, но сохранить разделы для восстановления?
Такая вот ситуация - на ноутбуке стоит восьмерка, но мне нужно поставить 7 но при этом сохранить возможность в любой момент используя...

Зависает Windows 7X64
периодически зависает W7, большей частью при воспроизведении музыки через AIMP или просмотре IP-TV. В сети советуют снести и...

Wi fi 6 для Windows 7x64
Здравствуйте, подскажите как будет себя вести адаптер PCI express wi fi 5(6), на ОС win7x64? Детали: есть задумка установить адаптер wi...

7
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
05.06.2015, 14:39
Как решена???????????

Добавлено через 18 минут
что никто не знает?
0
1 / 1 / 0
Регистрация: 01.06.2011
Сообщений: 7
06.06.2015, 15:56  [ТС]
добавьте к себе модуль:

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
174
175
176
177
178
unit VCLFixes;
 
interface
 
implementation
 
uses
Messages, Windows, Controls, Dialogs;
 
// WMDrawItem fails under WOW64, see [url]http://qc.codegear.com/wc/qcmain.aspx?d=19859[/url]
 
{$IFDEF VER150} // Delphi7
 
function GetMethodAddress(AMessageID: Word; AClass: TClass; out MethodAddr: Pointer): Boolean;
var
DynamicTableAddress: Pointer;
MethodEntry: ^Pointer;
MessageHandlerList: PWord;
EntryCount, EntryIndex: Word;
begin
Result := False;
 
DynamicTableAddress := Pointer(PInteger(Integer(AClass) + vmtDynamicTable)^);
MessageHandlerList := PWord(DynamicTableAddress);
EntryCount := MessageHandlerList^;
 
if EntryCount > 0 then
for EntryIndex := EntryCount - 1 downto 0 do
begin
Inc(MessageHandlerList);
if (MessageHandlerList^ = AMessageID) then
begin
Inc(MessageHandlerList);
MethodEntry := Pointer(Integer(MessageHandlerList) + 2 * (2 * EntryCount - EntryIndex) - 4);
MethodAddr := MethodEntry^;
Result := True;
end;
end;
end;
 
function PatchInstructionByte(MethodAddress: Pointer; ExpectedOffset: Cardinal;
ExpectedValue: Byte; NewValue: Byte): Boolean;
var
BytePtr: PByte;
OldProtect: Cardinal;
begin
Result := False;
 
BytePtr := PByte(Cardinal(MethodAddress) + ExpectedOffset);
 
if BytePtr^ = NewValue then
begin
Result := True;
Exit;
end;
 
if BytePtr^ <> ExpectedValue then
Exit;
 
if VirtualProtect(BytePtr, SizeOf(BytePtr^), PAGE_EXECUTE_READWRITE, OldProtect) then
begin
try
BytePtr^ := NewValue;
Result := True;
finally
Result := Result
and VirtualProtect(BytePtr, SizeOf(BytePtr^), OldProtect, OldProtect)
and FlushInstructionCache(GetCurrentProcess, BytePtr, SizeOf(BytePtr^));
end;
end;
end;
 
function PatchInstructionBytes(MethodAddress: Pointer; ExpectedOffset: Cardinal;
const ExpectedValues: array of Byte; const NewValues: array of Byte;
const PatchedValues: array of Byte): Boolean;
var
BytePtr, TestPtr: PByte;
OldProtect, Index, PatchSize: Cardinal;
begin
BytePtr := PByte(Cardinal(MethodAddress) + ExpectedOffset);
 
Result := True;
TestPtr := BytePtr;
for Index := Low(PatchedValues) to High(PatchedValues) do
begin
if TestPtr^ <> PatchedValues[Index] then
begin
Result := False;
Break;
end;
Inc(TestPtr);
end;
 
if Result then
Exit;
 
Result := True;
TestPtr := BytePtr;
for Index := Low(ExpectedValues) to High(ExpectedValues) do
begin
if TestPtr^ <> ExpectedValues[Index] then
begin
Result := False;
Exit;
end;
Inc(TestPtr);
end;
 
PatchSize := Length(NewValues) * SizeOf(Byte);
 
if VirtualProtect(BytePtr, PatchSize, PAGE_EXECUTE_READWRITE, OldProtect) then
begin
try
TestPtr := BytePtr;
for Index := Low(NewValues) to High(NewValues) do
begin
TestPtr^ := NewValues[Index];
Inc(TestPtr);
end;
Result := True;
finally
Result := Result
and VirtualProtect(BytePtr, PatchSize, OldProtect, OldProtect)
and FlushInstructionCache(GetCurrentProcess, BytePtr, PatchSize);
end;
end;
end;
 
procedure PatchWinControl;
var
MethodAddress: Pointer;
begin
if not GetMethodAddress(WM_DRAWITEM, TWinControl, MethodAddress) then
begin
ShowMessage('Cannot find WM_DRAWITEM handler in TWinControl');
Exit;
end;
if (not PatchInstructionByte(MethodAddress, 13, $4, $14)) // release and package
and (not PatchInstructionByte(MethodAddress, 23, $4, $14)) then // debug
ShowMessage('Cannot patch WM_DRAWITEM');
 
if not GetMethodAddress(WM_COMPAREITEM, TWinControl, MethodAddress) then
begin
ShowMessage('Cannot find WM_COMPAREITEM handler in TWinControl');
Exit;
end;
if (not PatchInstructionByte(MethodAddress, 13, $04, $8)) // release and package
and (not PatchInstructionByte(MethodAddress, 23, $04, $8)) then // debug
ShowMessage('Cannot patch WM_COMPAREITEM handler');
 
if not GetMethodAddress(WM_DELETEITEM, TWinControl, MethodAddress) then
begin
ShowMessage('Cannot find WM_DELETEITEM handler in TWinControl');
Exit;
end;
if (not PatchInstructionByte(MethodAddress, 13, $04, $0C)) // release and package
and (not PatchInstructionByte(MethodAddress, 23, $04, $0C)) then // debug
ShowMessage('Cannot patch WM_DELETEITEM handler');
 
if not GetMethodAddress(WM_MEASUREITEM, TWinControl, MethodAddress) then
begin
ShowMessage('Cannot find WM_MEASUREITEM handler in TWinControl');
Exit;
end;
if (not PatchInstructionBytes(MethodAddress, 10, [$08, $8B], [$04, $90, $90, $90], [$04, $E8])) // release and package
and (not PatchInstructionBytes(MethodAddress, 20, [$08, $8B], [$04, $90, $90, $90], [$04, $E8])) then // debug
ShowMessage('Cannot patch WM_MEASUREITEM handler');
end;
 
{$ENDIF}
 
// end of "WMDrawItem fails under WOW64" patch
initialization
{$IFDEF VER150} // Delphi7
PatchWinControl; 
{$ENDIF}
 
end.
1
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
08.06.2015, 12:48
Зачем так много кода?
При чем здесь мой PageControl ?
В инспекторе свойства над менять?

Добавлено через 3 минуты
Я лучше AlphaControls попробую
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
12.06.2015, 07:41
Это развод или будет работать?
0
1 / 1 / 0
Регистрация: 01.06.2011
Сообщений: 7
17.04.2023, 14:15  [ТС]
Это 100% работает
0
17.04.2023, 14:34

Не по теме:

Цитата Сообщение от RinatKzn Посмотреть сообщение
Это 100% работает
Чуть-чуть совсем припоздал с ответом...

0
1 / 1 / 0
Регистрация: 01.06.2011
Сообщений: 7
17.04.2023, 14:50  [ТС]
раз код выложен, значит он работает, зачем еще спрашивать работает или нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2023, 14:50
Помогаю со студенческими работами здесь

Windows 7x64 HP сожрала 8 ГБ ОЗУ
Суть в топике. Такое вообще нормально? =-O Сейчас дожирает остаток... :wall: Прогнал Comodo Cleaning Essentials, который нашел...

Windows 7x64 SSD долго выключается
Всем привет! Подскажите, как диагностировать долгое выключение системы? Установил MobaXterm - аналог putty и OBS Studio - для записи с...

Отключились эффекты AERO на Windows 7x64
Прошу прощения, но у меня появилась такая проблема... Пытаюсь поставить другую тему на свою винду, а её вид меняется на стоковый (как в...

Windows 7x64 максимальная и панель задач
Ребята,подскажите пожалуйста,у меня стоит система(windows 7 x64 максимальная),ноутбук Lenovo B570e,с недавних пор началась такая беда,при...

BSOD atikmpag.sys Windows 7x64
Добрый день. Дамп http://rusfolder.com/35937374 Конфигурация: ОС Windows 7 Home Basic, 64-bit Версия 6.1.7601 Service Pack 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru