Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

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

Ответ
 
Опции темы
Старый 04.01.2017, 23:16   #1
IvaniuS
Форумчанин
 
Регистрация: 16.04.2007
Адрес: Одесса
Сообщений: 225
Репутация: 78
Восклицание ComboBox\PopupMenu Остаются полосы\тени после использования

С недавних пор после использования моей надстройки-формы, остается тень, даже после выгрузки из памяти приложения, обновление не помогает, не понимаю где утечка или что.
Суть:


Использую pmItems и вот такой обработчик Popup, но даже в обычном ComboBox тоже остается подобное.
Код:

Procedure TMainForm.pmItemsPopup(Sender: TObject);
var
  text:string;
Begin
  Try
    If cbbType.ItemIndex >= 0 Then
    Begin
      pmItems.Items.Clear;
      text:=PluginProc(Ord(PCGetList), 'ByPasses', PChar(Pinteger(cbbType.ItemIndex - 3)));
      if text<>'' then
        pmAddItems(text);
    End;
  Except
    On E: Exception Do
      Raise Exception.CreateFmt('"%s":"%s" in pmItemsPopup', [E.Message, E.ClassName, Name]);
  End;
End;

Procedure TMainForm.pmAddItems(Items: String);
Var
  i: integer;
  sarr: TArray<String>;
Begin
  Try
    pmItems.Items.Clear;
    sarr := Items.Split([#13 + #10]);
    For i := 0 To High(sarr) Do
      pmItems.Items.Add(NewItem(sarr[i], 0, False, True, MenuItemEdtAddClick, 0, 'MenuItem' + IntToStr(i)));
  Except
    On E: Exception Do
      Raise Exception.CreateFmt('"%s":"%s" in pmAddItems', [E.Message, E.ClassName, Name]);
  End;
End;

Ткните носом пожалуйста где утечка, ошибка или что-то не очищаю, очень бесит и мешает, может в стиле где-то просто тени выключить хотя-бы как костыль - подойдет...

П.С. Раньше такого не было, VCL не крутил не менял, но видимо что-то добавил и пошло поехало вот такое. Использую стандартный VCL и стили иногда.
IvaniuS вне форума   Ответить с цитированием
Старый 04.01.2017, 23:49   #2
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 127
Репутация: 39
По умолчанию

Если программа не сверхсекретная выложите исходник.
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Старый 04.01.2017, 23:58   #3
IvaniuS
Форумчанин
 
Регистрация: 16.04.2007
Адрес: Одесса
Сообщений: 225
Репутация: 78
По умолчанию

не секретная, там просто длл интерфейс - надстройка, ничего такого нету, завтра проснусь выложу.
IvaniuS вне форума   Ответить с цитированием
Старый 05.01.2017, 04:02   #4
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 127
Репутация: 39
По умолчанию

Цитата:
Сообщение от IvaniuS Посмотреть сообщение
не секретная, там просто длл интерфейс - надстройка, ничего такого нету, завтра проснусь выложу.
Окей,так будет проще разобратся
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Старый 12.01.2017, 12:58   #5
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 14,032
Репутация: 3550
По умолчанию

Цитата:
Сообщение от IvaniuS Посмотреть сообщение
завтра проснусь выложу.
Мне уже страшно, человек не проснулся?
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Старый 12.01.2017, 13:15   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,698
Репутация: 5909
По умолчанию

Дык может в спячку впал, рождественские каникулы они такие, мало ли ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 17.01.2017, 19:36   #7
IvaniuS
Форумчанин
 
Регистрация: 16.04.2007
Адрес: Одесса
Сообщений: 225
Репутация: 78
По умолчанию

Простите пожалуйста, костыль конечно, главное что проблему решает:
Суть проблемы оказать в Hint`aх
Решение в FormCreate формы
Присваиваем HintWindowClass := THintWindowWoShd;
Цитата:
type
THintWindowWoShd = Class(THintWindow)
Protected
Procedure CreateParams(Var Params: TCreateParams); Override;
End;

...

Procedure THintWindowWoShd.CreateParams(Var Params: TCreateParams);
Begin
Inherited CreateParams(Params);
Params.WindowClass.Style := Params.WindowClass.style And Not CS_DROPSHADOW;
End;

Procedure TMainForm.FormCreate(Sender: TObject);
Begin
HintWindowClass := THintWindowWoShd;
end;
Всем спасибо.
IvaniuS вне форума   Ответить с цитированием
Ответ



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отобразить 2 столбца в combobox после выбора ольгаг Microsoft Office Excel 1 20.12.2015 02:25
излишняя проверка после использования ключевого слова is hoz Общие вопросы .NET 4 11.03.2015 22:18
PopupMenu + ComboBox beegl Общие вопросы Delphi 1 08.06.2013 13:54
На фотобарабане остаются следы Yura_S Железо 3 25.09.2010 12:13
virtualbox: не работает сеть на компе после использования этой проги bill_gates Софт 0 05.07.2009 13:03




15:24.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru