Конференция "Компоненты" » добавить в TCustomStringGrid esEllipsis esPicklist [D7, WinXP]
 
  • Ivanius © (29.08.13 23:37) [0]
    Есть у нас пример переписывания TStringGrid`a где добавляем тип ячейки т.е. esEllipsis(кнопка скраю с 3 точками) esPickList(по типу комбобокса) и т.д. вот отсюда http://delphi.cjcsoft.net/viewthread.php?tid=47965
    там используют TInplaceEdit, но я использую не стандартный стринг грид, а вот отсюда http://avemey.com/zcolorstringgrid/z...id.php?lang=ru
    + я его уже дописал для себя и добавил еще свойств как в екселе, но вот реализовать эти кнопочки не могу т.к. вместо стандартного TInplaceEdit в нем используется TCustomMemo, а одно к другому практически не совместимо.
    Конкретнее мне нужно в этот TCustomMemo добавить свойства тип (что я успешно сделал) и при смене его, рисовать кнопку или комбобокс и обрабатывать нажатие (что я не сделал), копавшись в исходниках TInplaceEdit`a ни к чему не пришел и прошу помощи.
    В моем случае он объявлен как:
    //âìåñòî ñòàíäàðòíîãî InplaceEditor-à
     TZInplaceEditor = class(TCustomMemo)
     private
       FGrid: TZColorStringGrid;
       FExEn: integer;  // "êîñòûëü" äëÿ èñïðàâíîé ðàáîòû DoEnter/DoExit *^_^*

     protected

       procedure DoEnter; override;
       procedure DoExit; override;
       procedure Change; override;
       procedure DblClick; override;
       procedure KeyDown(var Key: Word; Shift: TShiftState); override;
       procedure KeyPress(var Key: Char); override;
       procedure KeyUp(var Key: Word; Shift: TShiftState); override;

     public
       constructor Create(AOwner: TComponent); override;
       function  DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
       function  DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;override;
     end;

     TInplaceEditorOptions = class (TPersistent)
     private
       FGrid: TZColorStringGrid;
       FFontColor: TColor;
       FBGColor: TColor;
       FBorderStyle: TBorderStyle;
       FAlignment: TAlignment;
       FWordWrap: Boolean;
       FUseCellStyle: Boolean;
       procedure SetFontColor(const Value: TColor);
       procedure SetBGColor(const Value: TColor);
       procedure SetBorderStyle(const Value: TBorderStyle);
       procedure SetAlignment(const Value: TAlignment);
       procedure SetWordWrap(const Value: Boolean);
       procedure SetUseCellStyle(const Value: Boolean);
     protected
     public
       constructor Create(AGrid: TZColorStringGrid); virtual;
     published
       property FontColor: TColor read FFontColor write SetFontColor default clblack;
       property BGColor: TColor read FBGColor write SetBGColor default clWhite;
       property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsNone;
       property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
       property WordWrap: Boolean read FWordWrap write SetWordWrap default true;
       property UseCellStyle: Boolean read FUseCellStyle write SetUseCellStyle default true;
     end;


    П.С. Если не туда копаю тогда прошу направить меня в нужное русло!
  • DimaBr © (30.08.13 02:48) [1]
    Нужно найти место, где создаётся этот InplaceEditor класса TCustomMemo. Создаваться он, скорее всего, должен в виртуальном методе. Вот этот метод  и нужно подменить, чтобы в нем создавался ваш TZInplaceEditor
 
Конференция "Компоненты" » добавить в TCustomStringGrid esEllipsis esPicklist [D7, WinXP]
Есть новые Нет новых   [118580   +29][b:0][p:0.002]