Forum Replies Created
-
AuthorPosts
-
Feg16Participant'Support' wrote:
Спасибо
Это действительно странно, но такое же поведение и без всяких скинов наблюдается в Вашем примере.
При выключенных скинах можно заходить в Frozencols и появляется окно редактирования, разве что значение при этом не меняется. Попробуйте.
Попытаюсь узнать – почему так.
PS. А может так и должно быть в GridEH? Это не нормальное его поведение?
Это нормальное поведение. фрозен – от слова замораживать. Столбец всегда будет на одном месте. Запрещать редактирование надо у него в свойствах
February 22, 2011 at 2:06 am in reply to: На какую версию дельфи лучше ставить AlphaControls? #44970Feg16Participant'Mr.Dmitry' wrote:Поставил AlphaSkins из папки D2010 на Delphi Embarcadero RAD STUDIO 2010. Теперь при компиляции любого проекта с AlphaControls ругается на файл sStrings.dcu. Если данная версия Delphi не подходит, то подскажите на какую версию лучше ставить?
Советую не ставить вообще, до выхода следующей стабильной версии, иначе нахватаешся
Feg16ParticipantВ результате долгих экспериментов демка все таки детектед. Основываясь на фактах, утверждаю что проблема возникает при отправке сообщения скроллбарам SynEdit, если в проекте участвует Eurekalog.
В аттаче демка и видео пример реализации. Так-же что на меня находит мысль что вы не верите в мои сообщения, поэтому архив с демкой заблокирован и имеет мд5 хеш, который можете проверить, не сфальцифицирован ли архив 🙄
зы. Судя по оперкоду, проблему как выявить, так и решить не удастся, из-за того что эврика внедряет свой код для отслеживания экзепшенов, что может влиять на работу проекта в целом. Поэтому скорее всего на тему можно забить, но иметь ввиду :ph34r:
Feg16Participant'Support' wrote:В стандартном контроле Items рисуются не Delphi, а Windows…
Странная картина наблюдается с ListView, похоже на разных машинах координаты от системы возвращаются разные.
С многоточием при переносе текста проблема – стандартные функции вывода тектса не поддерживают вывод многоточия в первой строке, если не помещается.
Нашел. Но думаю это не слишком сложно поправить 🙄
А по вопросу координат – могу предложить помощь потестировать и разобрать на кубики, у меня большой парк разнородных систем.
Feg16Participant'Support' wrote:Если демка есть – можно ее посмотреть?Будет вечером. Там просто диалог на форму ложим, и начинаем быстро открывать один за другим файлом. В прекрасный момент диалог падает 🙄 В принципе это не страшно, так как глушится на месте, но то что его может перехватить основной поток – не очень хорошо, возможны утечки. Поэтому хочу получить весь юнит, чтобы получить более детальный стек вызова и там-же поэкспериментировать.
'Support' wrote:О размерах страницы форума я не задумывался, не смотрел. Сейчас изменено на внешние стили.Так лучше, а то грузить форум с GPRS траффиком довольно накладно, спасибо 🙄
Feg16Participant'Support' wrote:Это вопрос не остабильности ведь, а о способе обработки ошибки – выдать сообщение или тихо заменить вводимые данные на другие…
В следующей версии при возникновении такой ошибки будет возвращено старое значение и выведено сообщение о несоответствии формата.
Во! Гут 🙄 буду благодарен
Feg16Participant'Support' wrote:Странная картина наблюдается с ListView, похоже на разных машинах координаты от системы возвращаются разные.
Я еще буду изучать его, возможно не буду опираться на системные функции, если это подтвердится.
С многоточием при переносе текста проблема – стандартные функции вывода тектса не поддерживают вывод многоточия в первой строке, если не помещается.
Опять же еще буду смотреть, но похоже такого режима в стандартных функциях нет и придется писать свою.
Эм.. а вы отталкиваетесь разве не от исходников стандартного TListView? В вашем контроле походу все делается аналогичным способом, акромя вывода другой картинки чекбокса и своей картинки иконки. Или я чего-то недопонимаю?
Feg16ParticipantПопытался собрать демку – получилось с первого раза. Начала тыкать – то через раз, потом через 5 раз, потом вообще перестало. Послу получаса тыканья опять одна появилась, с чем и поспешил навскидку поработать:
Для начала смотрим стек вызова и видим что ошибка происходит когда отправляется оконное сообщение после выполнения диалога.
Code:StdWndProc(11208064,2,0,0)
TCommonDialog.TaskModalDialog($438714,(no value))
TOpenDialog.DoExecute($438714)
TOpenDialog.Execute
TForm1.ToolButton1Click()Декомпилим SacBUtils.dcu, получаем карту нужных точек:
Code:0012E6A8 0050FD99 mytest.0050AA10 TacScrollWnd.acWndProc
0012E6B4 0050B826 mytest.0050FCB0 TacBaseWnd.acWndProcДалее выносим блок дампа:
Code:0050FD94 |. E8 77ACFFFF CALL mytest.0050AA10 ;TacScrollWnd.acWndProc
0050FD99 |. 8B06 MOV EAX,DWORD PTR DS:[ESI]
0050FD9B |. 83E8 05 SUB EAX,5 ;Тут некий кейс от 5 до 45068
0050FD9E |. 74 37 JE SHORT mytest.0050FDD7
0050FDA0 |. 83E8 05 SUB EAX,5
0050FDA3 |. 74 11 JE SHORT mytest.0050FDB6
0050FDA5 |. 05 F6FEFFFF ADD EAX,-10A
0050FDAA |. 83E8 02 SUB EAX,2
0050FDAD |. 72 28 JB SHORT mytest.0050FDD7
0050FDAF |. 2D F6AE0000 SUB EAX,0AEF6
0050FDB4 |. 75 30 JNZ SHORT mytest.0050FDE6
0050FDB6 |> 8B43 4C MOV EAX,DWORD PTR DS:[EBX+4C] ;Как я понял тут тест на окно активно / неактивно
0050FDB9 |. 50 PUSH EAX ;Стеким хендл окна
0050FDBA |. E8 8584EFFF CALL;Вызываем проверку на видимость окна
0050FDBF |. 85C0 TEST EAX,EAX
0050FDC1 |. 74 23 JE SHORT mytest.0050FDE6 ;Если окно видимо – отправляем сообщение о отрисовке
0050FDC3 |. 6A 00 PUSH 0 ; 0
0050FDC5 |. 6A 00 PUSH 0 ; 0
0050FDC7 |. 68 85000000 PUSH 85 ; WM_NCPAINT
0050FDCC |. 8B43 4C MOV EAX,DWORD PTR DS:[EBX+4C] ;
0050FDCF |. 50 PUSH EAX ; хендл окна
0050FDD0 |. E8 8785EFFF CALL; вызов отправки сообщения Далее выполняетс системный код:
Code:function StdWndProc(Window: HWND; Message, WParam: Longint;
LParam: Longint): Longint; stdcall; assembler;
asm
бла бла бла
MOV EAX,[ECX].Longint[4] ; регистр ECX пуст!
CALL [ECX].Pointer
бла бла бла
end;Делаем приблизительные выводы: объект назначения уничтожен в промежутке от отправки до прихода сообщения. Причем не всегда, а в рандомных ситуациях.
Если надо еще более детально – сделаю в выходные, когда буду дома.
зы. не в обиду. я рад сотрудничать с вами, и все мои выкрики, усмешки и прочее не принимайте близко, просто когда надо делать много и часто, а потом то что сделано начинает вылетать в неожиданных местах, от тебя не зависящих – нервы не выдерживают =)
зы2. в качестве оффтопика. А почему все стили форума тупо вбиваются в страницу? это же огромные тормоза при загрузке и большой сжираемый траффик, разве сложно забить их в один CSS файл который будет кешироваться только один раз.
Feg16Participant'Support' wrote:Когда-то я давал Вам исходники, разве это как-то помогло тогда?Видимо несложно для этой ошибки сделать програмку с демонстрацией проблемы?
Если я не задавал больше вопросов – значит я там покопался и помогло. В аттаче видео. Демку пока собрать не получается, завтра попробую на свежую голову
Feg16Participant'Support' wrote:Все сделано по примеру стандартных компонент. Если например '1.121.12' вставлять в числовое поле в DataSet через грид или еще как – будет то же самое, выведется ошибка о несоответствии формата.
Это понимаю. Но раз вы делаете свои компоненты отдельными, то наверное стоит уделить внимание тому, чтобы они работали более стабильными чем стандартные?
Feg16Participant'Support' wrote:Насчет чекбоксов – можно посмотреть скриншот стандартного ListView с чекбоксами?Эм.. а второй скрин постом выше не подходит? Если нет, уточните что вы хотите увидеть
Feg16Participant'Support' wrote:Как раз это и было частично причиной выхода версии 7.31 Разве проблема еще есть?Есть. Пустая форма, одни DecimalSpinEdit, вводим “-” и см аттач
'Support' wrote:За скриншоты чужих десктопов спасибо, но там нигде не видно, что проблема именно в скинах.Отчеты нельзя из мантисы вынуть? Можете их прислать пожалуйста? Посмотреть внимательно скриншоты?Пожалуйста сразу и ссылки на эти посты, чтобы говорить конкретно.Отчеты выну позже, когда приеду в город. Это не скриншоты, а первая ступень ловилки исключений. Там видно, что исключения возникают:
1) Когда вводят минус
2) Когда пытаются развернуть форму из таскбара
3) Когда форму переносят на задний – передний план
4) Непонятная, когда на форме крутится много потоков, перестает отрабатывать прорисовке и в конце модуль вылетает на ошибку
5) Бывает при включеных бордерах
6) Бывает при переключении вкладок пейдж контрола, когда перерисовывается сначала при помощи эффекта показа формы, а потом при помощи эффекта смены вкладки пейджконтрола
Feg16Participant'Support' wrote:А что должно произойти?
По хорошему – должна отмениться вставка. Вы же скопированый в буфер обмена кусок текста не вставите в папку? Или скопированный файл в TEdit… Я понимаю если можно было обработать исключение в какой нибудь функции вида OnFormatError, но таковой нет, следовательно она должна обрабатываться уровнем ниже.
Feg16Participant'Sem' wrote:К сожалению у меня только sMonthCalendar.dcu
Что в принципе неудивительно 🙂
Если горит – разреши изменять константе в режиме выполнения и задай нужное название константе s_Today: sConst.ACString;
Feg16Participant'Support' wrote:Если перед открытием диалога не перемещать форму, то ошибки нет?Извиняйте конешно, но ваша манера задавать вопрос, ответ на который был выше – начинает немного напрягать.
Quote:Если открыть программу, перетащить ее форму влево – вправо, а потом попытаться выполнить этот код – то программы вылетит на ошибку (см. аттач)Если открыть программу и не перетаскивать ее туда-сюда – то ошибки не возникает
'Support' wrote:Вопрос – откуда видно, что перехватывается еще и нашим кодом?Объяснять я не силен, но ваш код по битам разложить могу, если понадобиться доказать что возникает ошибка именно в скомпиленном у вас dcu шнике.
Но раз спросили – отвечу. В приложении имеется глобальный перехватчик исключений. Исключение возбуждается в acBUtils.pas и потом не передается в основной поток программы. Проявив немного пыхтения и заглушив нужные джампы, можно увидеть что исключение перекрывается в той-же диапазоне памяти, где загружен алфьфаскиновый оперкод. Если дадите исходник юнита – попробую найти проблемное место.
Feg16Participant'Support' wrote:Попробуйте сделать пустой обработчик события OnDrawItem, можно просто комментарий там оставить. В этом случае все элементы списка будут рисоваться стандартной процедурой.Пахнет говнокодом. В таком случаем необходимо сделать новое свойство компонента, рисовать стандартным обработчиком или нет, если не можете сделать свой. В аттаче два скриншота стандартного и скиного листа + бонус два видео, где однозначно видно в чем ваша проблема супротив стандартного листа.
Feg16Participant'Support' wrote:Можно глянуть?
PS. Версия 7.31 была выложена по просьбе людей из-за нескольких важных багфиксов которые там были сделаны.
Ах да, банальный ввод минуса в поле ввода чисел – это не важно, пофигу что данные пользователи ввести не могут :huh:
Глянуть? – да пожалста. В аттаче скриншоты, отчеты эврики хранятся в мантисе. Если посмотреть внимательно – то видно что ошибки имеют место всего в 3-5 местах программы. Которые я вам вот уже который месяц усиленно расписываю в постах. Пароль в личке.
Feg16Participant'Support' wrote:Свойство UseSystemDecSeparator True?
По умолчанию было выключено. Включил – работает только с точкой. Но в таком случае возникает вторая ошибка – из буфера обмена можно запросто вставить число к примеру “1.121.12” и компонент вылетит на ошибку FormatError.
Feg16Participant'Support' wrote:Эта надпись берется из comctl32.dll текущей системы и, по идее, должна быть одинакова и в run-time и в design-time.
Видимо по какой-то причине не читается надпись на Вашей системе, единственная идея которая приходит в голову на данный момент – возможно у среды Delphi и у программы различные настройки безопасности.
Возможно система как-то блокирует доступ к ресурсам comctl32.dll для Вашей программы?
Мое скромное имхо – во первых сделать тестовое приложение в котором проверить, действительно ли кто-то блокирует (вероятность -0.5 процентов =) и если все таки возникают проблемы – то только тогда брать из файла ресурсов. Иначе некоторые приложения со специфическими языковыми настрйками работать однофигственно не будут
Feg16ParticipantРешил выделить еще немного своего времени и покопался в отладчике. Нашел что исключение вызывается после закрытия диалогового окна, которое создано следующим кодом:
Code:function TDataExport.FileOpen(var UserFileName: string; FileExt: string): boolean;
begin
Result := False;
with TsOpenDialog.Create(nil) do
try
FileName := FileName;
DefaultExt := FileExt;
Filter := Concat('*.', FileExt);
if Execute then begin
UserFileName := FileName;
if ExtractFileExt(UserFileName) = '' then
UserFileName := Concat(UserFileName, '.', FileExt);
Result := True;
end;
finally
Destroy();
end;
end;Причем пофигу, хоть TOpenDialog, TsOpenDialog, TSaveDialog, TsSaveDialog – все вылетают. пробовал убрать Destroy и задать родителя – однофигственно. Если выключить альфаскины – ошибки не возникает.
-
AuthorPosts