Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 3)

Автор: volser
Дата сообщения: 08.07.2009 13:53
MagistrAnatol
Тип картинки определять не надо. Он должен бить уже известен и храниться в базе, например хранить в базе расширение или какой то индекс в зависимости от расширения. Эти данные сохраняются при заливке картинке в базу.
Автор: vladman
Дата сообщения: 08.07.2009 13:54
AvGSoft

Цитата:
Подскажите если кто знает как определить текущий цвет элемента Ribbon'a?

Когда-то помогла вот эта статья. Надеюсь будет и вам полезна.
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 14:06
volser

Цитата:
Он должен бить уже известен и храниться в базе

ето понятно,но шоб его записать я должен определить тип при вставке файла, самый простой способ по расширению.
Нет примера для события?
Автор: JohnSilver182
Дата сообщения: 08.07.2009 14:12

Цитата:
Что именно не получается? Что конкретно хотелось бы сделать?


Я причем делал это на Ehlib .Типа если fieldname такое то , то посмотри в другое fieldname и покрась ячейку (ну это стандартно ) .

З.Ы. в Девках DrawColumnCell нет (

procedure TFormSprav.DBg_leftDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin


if (LowerCase(column.fieldname) ='drug_name') then begin
with DBg_left.Canvas do begin
if self.DataSource_left.DataSet['nal']=0 then
begin

{brush.color:=$e0e0e0;
Font.Color:=$0;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top,Column.Field.Text);}

end;
end;//with
end;//if

end;
Автор: volser
Дата сообщения: 08.07.2009 14:13
MagistrAnatol
[more=Пример]
procedure TForm1.cxGrid1DBTableView1Column1PropertiesGetGraphicClass(
AItem: TObject; ARecordIndex: Integer; APastingFromClipboard: Boolean;
var AGraphicClass: TGraphicClass);
var
AExt: String;
begin
// cxGrid1DBTableView1Column2 - колонка где хранится тип расширения

AExt := AnsiUpperCase(VarToStr(cxGrid1DBTableView1.DataController.Values[ARecordIndex, cxGrid1DBTableView1Column2.Index]));
case AnsiIndexText(AExt, ['BMP']) of
0: AGraphicClass := TBitmap;
end;
end;
[/more]

Добавлено:
JohnSilver182
Тема называется "Использование DevExpress". При чем здесь Ehlib?
Автор: vladman
Дата сообщения: 08.07.2009 14:27
JohnSilver182

Цитата:
З.Ы. в Девках DrawColumnCell нет (

Вы ошибаетесь. У TcxCustomGridTableView существует событие OnCustomDrawCell
TcxGridTableDataCellCustomDrawEvent = procedure(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean) of object;
Через параметр AViewInfo сможете добраться к многим свойствам ячейки, в том числе, нужным вам Item, и Value.
ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_Class_TcxGridTableDataCellViewInfo.htm
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 14:31
volser
есть небольшой ньюанс - вот кусок кода
TMetaClass *MetaClass;
//MetaClass = __classid(Graphics::TBitmap); // bmp
MetaClass = __classid(TJPEGImage); // bmp

AGraphicClass=MetaClass;
но в своиствах имейджа нужно указать тип класа - если я выбыраю любой тип кроме
TJPEGImage - выдает ошибку имейдж из нот валид
может как-то по другому присваивается клас а не AGraphicClass=?


Добавлено:
в примере на девках пишут
FOnGetGraphicClass(AItem, ARecordIndex, APastingFromClipboard, Result); - но я в упор не нахожу какой файл надо проинскайдить
Автор: volser
Дата сообщения: 08.07.2009 14:42
MagistrAnatol
Что это за класс TMetaClass? Зачем он?
Нужно просто указать AGraphicClass = TBitmap или AGraphicClass = TJPEGImage.
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 14:46
ето в делфи так
если я пишу так в билдере
получаю
[BCC32 Error] _frmMain.cpp(586): E2015 Ambiguity between 'TBitmap' and 'Windows::TBitmap'
если
AGraphicClass = Windows::TBitmap; -
[BCC32 Error] _frmMain.cpp(586): E2108 Improper use of typedef 'Windows::TBitmap'
Автор: volser
Дата сообщения: 08.07.2009 14:48
MagistrAnatol
Нужно просто указать с какого модуля брать. Попробуйте так AGraphicClass = Graphics.TBitmap;
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 15:23
volser
пробывал уже такой вариант не проходит
вот рабочий код
AnsiString AExt ;
AExt =tPolya->FBN("EXT")->AsString;
cxGrid1DBCardView1KARTINKA->Index)));
if (AExt=="bmp") gr = new Graphics::TBitmap;
if (AExt=="jpg") gr = gr = new TJPEGImage;
AGraphicClass = TGraphicClass(gr);
но он работает только если в базе однотипные картинки и правильно выставлено свойство GraphicClassName

Добавлено:
такой вариант
AnsiString AExt ;
AExt=cxGrid1DBCardView1->DataController->Values[ARecordIndex][cxGrid1DBCardView1KARTINKA->Index];
if (AExt=="bmp")TcxImageProperties(cxGrid1DBCardView1KARTINKA->Properties).GraphicClassName="TBitmap";
if (AExt=="jpg")TcxImageProperties(cxGrid1DBCardView1KARTINKA->Properties).GraphicClassName="TJPEGImage";
тоже не проходит,короче хз как его правильно реализовать
Автор: volser
Дата сообщения: 08.07.2009 15:49
MagistrAnatol
Покажите полностью код обработчика события.

Добавлено:
Пусть есть колонка. Нужно присвоить свойство колонки Properties = Image. Дальше на закладке событий появится события Properies.
Автор: jicoff
Дата сообщения: 08.07.2009 15:56
MagistrAnatol

А почему нельзя сразу присвоить:

if (AExt=="bmp")
AGraphicClass = __classid(Graphics::TBitmap);
else
if (AExt=="jpg")
AGraphicClass = __classid(TJPEGImage);


Зачем нужно память выделять new Graphics::TBitmap или new TJPEGImage под объекты? Грид сам создаст объекты в зависимости от класса.

Добавлено:
Вообще-то код TcxImageProperties(cxGrid1DBCardView1KARTINKA->Properties) означает, что создается локальный объект типа TcxImageProperties и у него свойство GraphicClassName инициализируется значением "TBitmap".

TcxImageProperties(cxGrid1DBCardView1KARTINKA->Properties)->... и ((TcxImageProperties*)cxGrid1DBCardView1KARTINKA->Properties)->... не одно и тоже.
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 16:15
jicoff
перепробывал я вагон вариантов
вот последний
AnsiString AExt ;
AExt=cxGrid1DBCardView1->DataController->Values[ARecordIndex][cxGrid1DBCardView1KARTINKA->Index];

if (AExt=="bmp")
AGraphicClass = __classid(Graphics::TBitmap);
else
if (AExt=="jpg")
AGraphicClass = __classid(TJPEGImage);

if(AExt=="bmp")
((TcxImageProperties*)cxGrid1DBCardView1KARTINKA->Properties)->GraphicClassName="TBitmap";
else if(AExt=="jpg" || AExt=="jpeg")
((TcxImageProperties*)cxGrid1DBCardView1KARTINKA->Properties)->GraphicClassName="TJPEGImage";
else if(AExt=="ico")
((TcxImageProperties*)cxGrid1DBCardView1KARTINKA->Properties)->GraphicClassName="TIcon";
else if(AExt=="wmf")
((TcxImageProperties*)cxGrid1DBCardView1KARTINKA->Properties)->GraphicClassName="TMetafile";


причем обрабатывал и событие cxGrid1DBCardView1KARTINKAGetProperties
все всемя одна и таже ошибка битмап имейдж из нот валид - в табличке две записи
в одном блобе загнано bmp в другом jpg
Автор: volser
Дата сообщения: 08.07.2009 16:21
MagistrAnatol
Этот код нужно писать в обработчике события OnGetGraphicClass.
Автор: X11
Дата сообщения: 08.07.2009 16:24
Вот что я заметил при работе программы на Windows Server 2003 SP2.

Проект создаём на WinXP SP3, D2007 со всеми обновлениями. Dev43.

1. Кидаем на форму локализер (кроме него у меня ещё там три cxGrid`а, два cxDateEdit`а, один cxPageControl).
2. Прямо в дизайнере присваиваем ему имя файла.
3. Active := true
4. Выбираем русский язык.
5. Компилируем программу. Запускаем. Всё работает, всё на русском.
6. Копируем программу (без файла локализации) на сервак.
7. Запускаем....
8. Программа запускается, это видно в диспетчере задач и сразу закрывается без показа окна и без показа ошибок.
Автор: volser
Дата сообщения: 08.07.2009 16:29
X11

Цитата:
3. Active := true

Может это делать программно поместив данный код в блок?

Код:
try
Active := true;
except
..
end
Автор: X11
Дата сообщения: 08.07.2009 16:41
volser это само собой. Я не зря выделил жирным текст: без показа ошибок.
Я понимаю, что всякие такие проверки - это дело рук программиста. По идее программа должна запуститься с выдачей ошибки, как это происходит на Win XP.
Автор: volser
Дата сообщения: 08.07.2009 16:45
X11
А 3. Active := true делается в дизайнере или программно?
Автор: X11
Дата сообщения: 08.07.2009 16:49

Цитата:
3. Active := true
4. Выбираем русский язык.
5. Компилируем программу.

Как видишь - в дизайнере.
Сначала загружаем язык, потом компилируем, потом запускаем на другом компе без файла локализации.
Автор: MagistrAnatol
Дата сообщения: 08.07.2009 16:54
volser
там он и написан,толку токо никакого
Автор: volser
Дата сообщения: 08.07.2009 17:01
X11
То что падает то это правильно. Вот почему не выдает ошибку это уже интересней.
В модуле SysUtils есть процедура которая обрабатывает ошибки.
procedure ExceptHandler(ExceptObject: TObject; ExceptAddr: Pointer); far;

Проверь отрабатывает она после ошибки или нет. Может в каком то модуле перекрыт дефолтный обработчик ExceptProc := @ExceptHandler;?
Автор: IGuselnikov
Дата сообщения: 09.07.2009 09:36
Добрый день!
Ищу уже как второй день компонент DevExpress.ExpressQuantumTreeList.Suite.v5.44, и все безуспешно.
Помогите пожалуйста ссылочкой )))
Автор: data man
Дата сообщения: 09.07.2009 09:40
IGuselnikov
Вам сюда Ссылка
И последующие страницы.
Автор: SIgor33
Дата сообщения: 09.07.2009 12:32
использую dxComponentPrinter для печати cxGrid. Когда текс в ячейки длинный (например Иванов Иван Иванович) он обрезается до размера ячейки (иванов ив) а хотелось бы чтобы все печаталось.
Автор: AvGSoft
Дата сообщения: 09.07.2009 12:52
vladman

Цитата:
Когда-то помогла вот эта статья. Надеюсь будет и вам полезна.

Действительно полезная вещь натолкнула на правильное решение, в итоге нашел вот это
Автор: asdnsd
Дата сообщения: 09.07.2009 13:35
Кто нибудь знает как можно сделать 2 Application Buttons у Ribbon?
Пример:
Автор: AvGSoft
Дата сообщения: 10.07.2009 09:45
asdnsd
Первое что пришло в голову это создай наследника от TdxCustomRibbon или TdxRibbon добавь еще одно определение TdxApplicationButtons и создай поведение аналогичное первому TdxApplicationButtons.
Автор: afiget
Дата сообщения: 10.07.2009 11:41
Есть 2 идентичных по структуре cxGrid с одинаковыми BandedTableView. Первые 2 Band зафиксированы.
Подскажите, полз, как при горизонтальной прокрутке одного BandedTableView прграмно прокрутить и второй до той же позиции?
Автор: PaulNBir
Дата сообщения: 10.07.2009 11:48
afiget

Цитата:
Есть 2 идентичных по структуре cxGrid с одинаковыми BandedTableView. Первые 2 Band зафиксированы.
Подскажите, полз, как при горизонтальной прокрутке одного BandedTableView прграмно прокрутить и второй до той же позиции?

я делал через обработку onLeftPosChanged у BandedTableView, правда синхронизировал грид с трилистом.
тебе должна помочь синхронизация TcxGridBandedTableView.Controller.LeftPos

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.