unit UComboGrid;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Variants, Grids, Forms, Dialogs, Controls,
StdCtrls, Windows, Messages, Graphics, ComCtrls;
type
{********************}
{* Objekt ComboGrid *}
{********************}
TComboGrid =
class(TStringGrid)
private
fKorrekturAuswahl: TComboBox;
protected
function SelectCell(ACol: Integer; ARow: Integer): Boolean;
override;
procedure WennExit(Sender: TObject);
public
constructor Create(AOwner: TComponent; TopPos: Integer);
reintroduce;
procedure Nachricht(Sender: TObject);
end;
implementation
//ComboGrid Methoden
constructor TComboGrid.Create(AOwner: TComponent; TopPos: Integer);
begin
inherited Create(AOwner);
Parent := AOwner
as TWinControl;
//Typumwandlung
Left := 10;
Top := TopPos;
DefaultColWidth := 25;
DefaultRowHeight := 18;
FixedCols := 0;
FixedRows := 0;
BorderStyle := bsNone;
ColCount := 17;
RowCount := 5;
ColWidths[0] := 40;
GridLineWidth := 1;
Width := 500;
Height := 200;
ShowHint := True;
ParentShowHint := True;
OnExit:= WennExit;
//Ereignisroutine zuweisen
//Selection:= TGridRect(Rect(-1, -1, -1, -1));
fKorrekturAuswahl := TComboBox.Create(AOwner);
with fKorrekturAuswahl
do
begin
Parent := AOwner
as TWinControl;
Left := 10;
Top := 10;
width := 40;
Visible:= True;
OnChange := Nachricht;
//Ereignisroutine zuweisen
end;
end;
function TComboGrid.SelectCell(ACol: Integer; ARow: Integer): Boolean;
var
CRect:TRect;
begin
//ShowMessage('Ja');
{ if(ACol=1)then
begin
CRect:= CellRect(ACol, ARow);
inc(CRect.Left, Left+2);
inc(CRect.Right, Left+2);
inc(CRect.Top, Top+2);
inc(CRect.Bottom, Top+2);
fKorrekturAuswahl.BoundsRect:=CRect;
fKorrekturAuswahl.Visible:=true;
fKorrekturAuswahl.ItemIndex:=integer(Objects[ACol, ARow])-1;
end
else fKorrekturAuswahl.Visible:= false; } //Absturz !
end;
//OnChange Ereignis von TComboBox
procedure TComboGrid.Nachricht(Sender: TObject);
begin
ShowMessage('
ja')
end;
procedure TComboGrid.WennExit(Sender: TObject);
begin
if not(ActiveControl=fKorrekturAuswahl)
then
begin
fKorrekturAuswahl.Visible:=false;
//Selection:= TGridRect(Rect(-1, -1, -1, -1));
end;
end;
end.