Forum Replies Created
-
AuthorPosts
-
elpikParticipant'Bash' wrote:
SkinProvider лежит на форме (забыл написать), Ничего нового не произошло.
Дайте демку на версии 8.12, если не трудно…
elpikParticipant'Support' wrote:Постараюсь выложить исправление в ближайшие дни.
Спасибо за демку.
Погорячился я…
В версии 8.12 по прежнему есть проблемы с прорисовкой DBGrid на некотрорых скинах
например на скине (Beijing Ext.asz) повторное пере-открытие датасета не прорисовывается…
при этом нет проблем с прорисовкой на скине (iOS4.asz)
ЗЫ: С уважением elpik…
elpikParticipant'elpik' wrote:+1 у меня ДБ-гриды тоже перестали отрисовываться…
ОТкатываюсь на 8.10…
В версии 8.12 проблема была решена…
Спасибо огромное ^_^
elpikParticipant+1 у меня ДБ-гриды тоже перестали отрисовываться…
ОТкатываюсь на 8.10…
elpikParticipant'Support' wrote:Спасибо за демку, постараюсь исправить в ближайшем релизе.
В новой версии 8.11 все прорисовывается нормально.
Спасибо огромное (^_^)
ЗЫ: топик закрываю. Еще раз большое спасибо (^_^)
elpikParticipantНакидал демку с бажкой…
При создании Child окошек, на выставленном скине iOS4, фрейм не перерисовывается пока не потянешь за край окна.
Тут либо проблема в скине либо в отрисовке фрейма…
(бажка не проявляется на скине AndroidOS)
Заранее благодарен.
elpikParticipantВопрос решен…
Сам олень, буду над собой работать 🙂
ЗЫ: Всем спасибо за внимание и поддержку.
elpikParticipant'Support' wrote:Новые манулы я думаю сделать онлайн, в таком же формате, как для ASkinEditor : http://www.alphaskin…wdoc.php?lng=ru
Тогда будет возможность держать их всегда в актульном состоянии, да и не сможет никто пожаловаться, что не работает или не открывается.
Планирую сделать для каждого компонента типа статьи, с картинками, примерами использования и т.п.
Хотел сначала типа Wiki что-то сделать, но так как планируется, наверное лучше будет. Любой материал можно мне прислать, а я его подправлю если надо и выложу. 🙂
А почему не хотите Wiki конференцию сделать, там можно и самим вносить исправления и дополнения, вся история хранится… можно оставлять комментарии, одни плюсы, чем просто html страница…
К томуже неплохо было бы и прием багрепортов организовать…
ИМХО, Wiki намного лучше во всех смыслах…
Типичные примеры:
elpikParticipant'Alex_S666' wrote:^_^ А под Visual Basic 2010? Будет такое хоть рассматриваться? А то как то другие языки пока нет желания изучать.. 😕
Вам поможет DevExpress… АС не трогайте 🙂
elpikParticipantРазобрался 🙂
Мой косяк был… я не удалил старый пакет с KssListView – основанный на старых версиях альфаскинов…
Извиняюсь за беспокойство 🙂
elpikParticipantчто мешает поставить последние скины?
elpikParticipantВ общем покопался в коде и разобрался, АСКИН не причем…
Оказывается Application.Terminate срабатывает не сразу а только после того как дойдет до точки Application.Run, иными словами он сначала создает все экземпляры окон проекта которые прописаны для автосоздания в опциях проекта.
А в некоторых из них у меня на событии OnCreate висело обращение к БД, что в данном контексте не имело смысла (мы закрываем приложение, зачем тянуть что-то из БД?)…
Исправив эти недостатки я перестал получать необработанное исключение…
Всем спасибо за помощь 🙂
elpikParticipant'Support' wrote:Спасибо за код, но не получается воспроизвести. Может можно подключиться удаленно поковыряться? 🙂
ps. Для чего вызывается ReloadSkin? Что-то не так с загрузкой скина?
Конечно можно, мой скайп elpik2, как у Вас появится время стукнитесь, и я настрою для вас ТимВьювер… (Если не отвечаю, это значит что я не за компом, а скайп включен на работе постоянно, поэтому на всякий случай заранее извиняюсь…)
ReloadSkin – хм… я начинал проект довольно давно, потом его отложили и вот сейчас возродили, поэтому изначально версия ASkin была древней и лохматой… Очевидно это результат экспериментов… Дело в том что имя выбранного скина сохраняется в ИНИ-шнике, и при запуске приложения программа “вспоминает” последний выбранный пользователем скин и применяет его…
Code:s:=ExtractFilePath(Application.ExeName);
if RightStr(s, 1) = '' then s:=s+'Skins'
else s:=s+'Skins';
sSkinManager1.Active:=False;
sSkinManager1.SkinDirectory:=s;
sSkinManager1.SkinName:=stSkinName;
sSkinManager1.ReloadSkin;
sSkinManager1.Active:=True;Предполагаю, когда то, без ReloadSkin он просто не срабатывал либо срабатывал частично…
elpikParticipant'Support' wrote:Application.Terminate вызывалось при нажатии “Отмена”?
Да, вот кусок кода при создании главного окна:
Code://при создании главного окна _—————————————————-
procedure TfrmMain.FormCreate(Sender: TObject);
var s: string;
begin
FS.ShortDateFormat:='DD.MM.YYYY';
FS.DecimalSeparator:='.';
Application.ShowMainForm:=false;
stVersion := ' версия: v.' + GetFileVersionExt(Application.ExeName);
SkinPMain.AddedTitle.Text := stVersion;
//создаем окна
Application.CreateForm(TfrmLogin, frmLogin);
Application.CreateForm(TfrmDataModule, frmDataModule);
//создаем объект обработчик ошибок, включаем его
ApCatcher:=TgsCatcher.Create(self); //создали екземпляр
ApCatcher.Enabled:=True; //включили обработчик
//проверяем есть ли папка Log если нет создаем ее…
s:=ExtractFilePath(Application.ExeName)+'Log';
if not DirectoryExists(s) then CreateDir(s);
//формируем имя Log – файла
ApCatcher.Log:=ExtractFilePath(Application.ExeName)+'LogReestr'+
FormatDateTime('_ddmmyyyy_hhnnss',now)+'.log';
//лог для базы
{
frmDataModule.BaseLoger.LogFileName := ExtractFilePath(Application.ExeName)+'LogBase'+
FormatDateTime('_ddmmyyyy_hhnnss',now)+'.log';
frmDataModule.BaseLoger.ActiveLogging := True;
frmDataModule.BaseLoger.ForceSaveLog := True;
}
//создаем файл пишем в него о запуске программы
s:=' Старт приложения. /'+Trim(SkinPMain.AddedTitle.Text)+'/';
UGlobals.WriteLog(ApCatcher.Log, s);
//считываем INI выставляем настройки программы
UGlobals.LoadINI;
s:=ExtractFilePath(Application.ExeName);
if RightStr(s, 1) = '' then s:=s+'Skins'
else s:=s+'Skins';
sSkinManager1.Active:=False;
sSkinManager1.SkinDirectory:=s;
sSkinManager1.SkinName:=stSkinName;
sSkinManager1.ReloadSkin;
sSkinManager1.Active:=True;
//сохраняем IP адрес
sLocalIP := GetLocalIP;
//Выставляем Анимацию
AnimMain.FileName := ExtractFilePath(Application.ExeName)+'Skins13.avi';
AnimMain.Top := 0;
AnimMain.Left := frmMain.ClientWidth – AnimMain.Width;
AnimMain.Active := UGlobals.bAnim;
chbAnim.Checked := UGlobals.bAnim;
//логинимся
if frmLogin.ShowModal = mrOk then
begin
frmLogin.Free;
Application.ShowMainForm := True;
frmDataModule.OpenProc('USER_DATA_GET', [iUserId]);
s := frmDataModule.Pr1.ParamValue('ROLE_NAM');
stBarMain.Panels[0].Text := Trim(s);
s := Trim(frmDataModule.Pr1.ParamValue('U_SURNAME')) + ' ' +
Trim(frmDataModule.Pr1.ParamValue('U_NAME')) + ' ' +
Trim(frmDataModule.Pr1.ParamValue('U_PATRONYMIC'));
stBarMain.Panels[1].Text := s;
//закрываем процедуру
frmDataModule.CloseProc;
//пишем в лог о входе
s:=' Вход в систему ('+s+')';
UGlobals.WriteLog(ApCatcher.Log, s);
stBarMain.Panels[2].Text := string(frmDataModule.BaseReestr.DBName);
myMainThread := TMainThread.Create;
myMainThread.StartedThrd := True;
if myMainThread.Suspended then myMainThread.Resume;
end
else
begin
Halt(0);
//Application.Terminate;
end;end;
Когда нажимаем “Отмена”, окно логина возвращает mrCancel, в итоге срабатывает ветка else с Halt(0),
и если закоментить Halt(0); и раскомментить Application.Terminate; появится вышеописанная ошибка, но только на некоторых скинах, на рисунке как раз скин на котором ошибка возникает…
elpikParticipantвечер добрый,
версия последняя 7.67
демку собрать не получилось, могу прислать проект но он очень здоровый, и требует подключения к FireBird серверу…
в демке я пробовал “повториить” ситуацию но ошибка не появлялась…
Проблему обошел “костылем” вместо Application.Terminate написал Halt(0), ошибка перестала возникать 🙂
elpikParticipant'Support' wrote:Кроме проблемы с цветом сетки есть еще несколько, необходимо выделить время для этого компонента и улучшить поддержку новых свойств, которые появились в последних студиях.
Возможно, самым простым решением на сейчас будет изменение свойства DrawingStyle на gdsClassic при включении скинов.
Да, действительно помогло, Во всех гридах проекта выставил gdsClassic…
Спасибо что откликнулись, если нужна будет моя помощь с радостью помогу в улучшении компоненты.
ЗЫ: С уважением elpik…
elpikParticipantДоброго вечера… Снова пытаюсь разобрать как применить собственную закраску грида
рассмотрев вариант с примером смог добиться чтобы ячейки грида рисовались правильно.
Для этого я вырвал метод из стандартного DBGrid, подставляя в него нужные цвета…
Однако линии сетки и незадействованный фон грида по прежнему не закрашиваются как надо…
В самом конце после прорисовки последней ячейки, вызывается метод:
Code:procedure TsDBGrid.PaintWindow(DC: HDC);
var
SavedCanvas : TCanvas;
bWidth : integer;
Bmp : TBitmap;
R, R1: TRect;
SelNdx :Integer;
begin
if FCommonData.Skinned then begin
if not (csDestroying in ComponentState) then begin
SavedCanvas := _TCustomControl(Self).FCanvas;
Bmp := CreateBmp32(Width, Height);
_TCustomControl(Self).FCanvas := Bmp.Canvas;
try
GetClipBox(DC, R);
Paint;
if (SkinData.CtrlSkinState and ACS_PRINTING = ACS_PRINTING) then bWidth := 2 else bWidth := 0;
BitBlt(DC, bWidth, bWidth, Width, Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
finally
_TCustomControl(Self).FCanvas := SavedCanvas;
Bmp.Free;
end;
end
end
else inherited;
end;Но я плохо понимаю как он заполняет грид, и заполняет ли вообще. И без Вашей помощи не смогу решить эту проблему…
Заранее благодарен: Файл исходника прилагаю…
elpikParticipant'VahaC' wrote:на этой странице посмотри пример Image of parent control
вот прямая ссылка на демо проект http://www.alphaskins.com/sfiles/demos/imageofparent.zip
Спасибо за инфу. Думаю в будущем поможет, но не сейчас…
Причина оказалась в следующем, я в программе указал: “Enable runtime theme” – нужно было для отображения группировки в ListView
Однако именно это свойство заставляет DBGrid рисоваться с белым фоном… Как только убрал, фон установился правильный…
elpikParticipantЗаметил что DBGrid на темных скинах красит внутренности грида (область данных) в белый фон…
Хочу исправить ситуацию, но для этого надо знать как сделать надпись, нужным фоном, либо как залить область канвы (ячейки) грида, нужным цветом взяв его из скина…
Если подскажете, выложу обновленный модуль ДБ грида…
Это модуль отвечающий за отрисовку ячейки грида DrawCell:
Code:var
DrawColumn: TColumn;
begin
CI.FillColor := Color;
CI.Ready := False;
if Self.UseRightToLeftAlignment then Canvas.TextFlags := Canvas.TextFlags or ETO_RTLREADING;
//–тут рисуем заголовок (он работает корректно) ———————-
if (ARow = 0) and (dgTitles in Options) then begin
if ACol >= IndicatorOffset then begin
DrawColumn := Columns[ACol – IndicatorOffset];
DrawTitleCell(ACol – IndicatorOffset, ARow, DrawColumn, AState); //–вызывается отрисоква заголовка грида
end
else begin
if SkinData.Skinned then begin
inc(aRect.Right);
inc(aRect.Bottom);
DrawIndicator(aRect, False);
end
else inherited DrawCell(ACol, ARow, ARect, AState);
end
end
else begin
//–тут рисуется область данных ——————————
if DataLink.Active then
if dgTitles in Options then FActiveRowSelected := ARow – 1 = DataLink.ActiveRecord
else FActiveRowSelected := ARow = DataLink.ActiveRecord
else FActiveRowSelected := False;if SkinData.Skinned then begin
if (ACol – IndicatorOffset) < 0 then begin
ARect.Right := ARect.Right + 1;
ARect.Bottom := ARect.Bottom + 1;
DrawIndicator(ARect); //–индикатор
end
else inherited DrawCell(ACol, ARow, ARect, AState); //–!!!!!!!!! вот тут вызывается метод из стандартного DBGrid – а он, зараза, красит ячейку в белый!!!! КАК БЫТЬ????!!!!
end
else begin
//–тут рисуются линии для нескинированных ячеек—————
inherited DrawCell(ACol, ARow, ARect, AState);
if gdFixed in AState then begin
if dgColLines in Options then begin
Canvas.Pen.color := clBlack;
Canvas.Pen.style := psSolid;
Canvas.MoveTo(aRect.Right, aRect.Top);
Canvas.LineTo(aRect.Right, aRect.Bottom + 1);
end;
if dgRowLines in Options then begin
Canvas.Pen.color := clBlack;
Canvas.Pen.style := psSolid;
Canvas.MoveTo(aRect.Left, aRect.Bottom);
Canvas.LineTo(aRect.Right, aRect.Bottom);
end;
end;
end;
end;
end;Заранее благодарен 🙂
elpikParticipant'ScS' wrote:Если начика одинаковая, зачем триал и фри? 😮
Триалка для буржуев. Чтоб могли обкатать.
Всегда ваш Капитан Очевидность 😀
-
AuthorPosts