cxgrid'de secili kayitlari yakalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
cxgrid'de secili kayitlari yakalama
cxGrid'de multiselection true yapilip Ctrl ile mouse tusuna basarak sectigim kayitlarin hangileri oldugunu nasil alabilirim? Bunlar bir selected list'te filan mı duruyor? Yoksa kayılar uzerinde gezip selected gibi bir flag mi kontrol edilecek acaba?
Kolay gelsin....
Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

Kod: Tümünü seç
with tvUsers.DataController do
begin
if not IsGridMode then
begin
ShowMessage('Grid mode is disabled');
Exit;
end;
BeginUpdate;
try
for I := 0 to GetSelectedCount - 1 do
begin
//Grid mode
DataSet.Bookmark := GetSelectedBookmark(I);
AEmail := DataSet.FieldValues['EMail'];
SendEmail(AEmail, ASubject, ATextToSend);
end;
finally
EndUpdate;
end;
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
S.A. Fahrettin abi,
Freeman hocama ek olarak , belki de aynı şeydir. Ama ben bir örnek ile karşılaşmıştım. Bu örnekte;
Demos klasöründe sanırım dediğin ile ilgili bir örnek var . (CellLevelMultiselectDemo isimli klasörde).
Burada; shift tuşuna basılı tutarak, excelde ki gibi , hücreleri seçiliyor ve ctrl+c ile kopyalanıp, excel içine yapıştırılabiliyor .
Freeman hocama ek olarak , belki de aynı şeydir. Ama ben bir örnek ile karşılaşmıştım. Bu örnekte;
Demos klasöründe sanırım dediğin ile ilgili bir örnek var . (CellLevelMultiselectDemo isimli klasörde).
Burada; shift tuşuna basılı tutarak, excelde ki gibi , hücreleri seçiliyor ve ctrl+c ile kopyalanıp, excel içine yapıştırılabiliyor .
Kod: Tümünü seç
unit [b]CellLevelMultiselectDemoMain[/b];
{$I ..\..\cxDemos.inc}
interface
uses
Windows, Forms, Messages, SysUtils, Classes, ActnList, ImgList, Controls, Menus, StdCtrls,
cxButtons, cxCheckBox, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxSpinEdit, ExtCtrls,
cxGridLevel, cxGridCustomTableView, cxGridCardView, cxGridDBCardView, cxClasses, cxControls,
cxGridCustomView, cxGrid, ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, DB,
cxDBData, cxDataStorage, cxLookAndFeelPainters, cxLookAndFeels, cxHyperLinkEdit, cxImageComboBox,
cxDBLookupComboBox, cxMemo, cxGridTableView;
type
TCellLevelMultiselectDemoMainForm = class(TForm)
mmMain: TMainMenu; miAbout: TMenuItem; miFile: TMenuItem; miExit: TMenuItem;
sbMain: TStatusBar; lbDescrip: TLabel;
LookAndFeelController: TcxLookAndFeelController;
Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;
lblSelectedRows: TLabel; lblSelectedColumns: TLabel; lblSelectedCells: TLabel; lblSelectedSummary: TLabel;
cxStyleRepository1: TcxStyleRepository;
styleSelected: TcxStyle;
styleNormal: TcxStyle;
Grid: TcxGrid;
TableView: TcxGridTableView;
Level: TcxGridLevel;
procedure miAboutClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure TableViewSelectionChanged(Sender: TcxCustomGridTableView);
procedure TableViewCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
procedure TableViewStylesGetHeaderStyle(Sender: TcxGridTableView; AColumn: TcxGridColumn; out AStyle: TcxStyle);
procedure TableViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
FAnchorLinkedAreaLastColumn: TcxGridColumn;
procedure CreateSpreadSheet;
procedure CreateColumns;
procedure CreateRows;
function GetColumnCaption(Index: Integer): string;
procedure SetColumnsSelected(AFromColumn, AToColumn: TcxGridColumn; ASelected: Boolean);
public
constructor Create(AOwner: TComponent); override;
end;
var
CellLevelMultiselectDemoMainForm: TCellLevelMultiselectDemoMainForm;
implementation
{$R *.dfm}
uses
{$IFDEF DELPHI6}
Variants,
{$ENDIF}
Dialogs, AboutDemoForm, cxVariants;
const
RecordCount = 500;
ColumnCount = 256;
constructor TCellLevelMultiselectDemoMainForm.Create(AOwner: TComponent);
begin // Gridde (1,5) kolonları ve (2,12) satırları arasında ki hücreleri seçili hale getiriyor
inherited Create(AOwner);
CreateSpreadSheet;
TableView.Controller.SelectCells(
TableView.Columns[1], TableView.Columns[5], 2, 12);
end;
procedure TCellLevelMultiselectDemoMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TCellLevelMultiselectDemoMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TCellLevelMultiselectDemoMainForm.TableViewSelectionChanged(
Sender: TcxCustomGridTableView);
function SelectedRowCount: Integer;
begin
Result := TableView.Controller.SelectedRowCount;
end;
function SelectedColumnCount: Integer;
begin
Result := TableView.Controller.SelectedColumnCount;
end;
function GetSummOfSelection: Integer;
var
I, J: Integer;
val: Variant;
begin
Result := 0;
for I := 0 to SelectedRowCount - 1 do
for J := 0 to SelectedColumnCount - 1 do
begin
val := TableView.DataController.GetValue(
TableView.Controller.SelectedRows[I].RecordIndex,
TableView.Controller.SelectedColumns[J].Index);
if not VarIsNull(val) then
Inc(Result, Integer(val));
end;
end;
begin
lblSelectedRows.Caption :=
FloatToStrF(SelectedRowCount, ffNumber, 15, 0);
lblSelectedColumns.Caption :=
FloatToStrF(SelectedColumnCount, ffNumber, 15, 0);
lblSelectedCells.Caption :=
FloatToStrF(SelectedRowCount * SelectedColumnCount, ffNumber, 15, 0);
lblSelectedSummary.Caption := FloatToStrF(GetSummOfSelection, ffNumber, 15, 0);
end;
procedure TCellLevelMultiselectDemoMainForm.TableViewCustomDrawIndicatorCell(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
var
AIndicatorViewInfo: TcxGridIndicatorRowItemViewInfo;
ATextRect: TRect;
AStyle: TcxStyle;
begin
if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
Exit;
ATextRect := AViewInfo.ContentBounds;
AIndicatorViewInfo := AViewInfo as TcxGridIndicatorRowItemViewInfo;
InflateRect(ATextRect, -2, -1);
if AIndicatorViewInfo.GridRecord.Selected then
AStyle := styleSelected
else
AStyle := styleNormal;
Sender.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.ContentBounds,
ATextRect, [], cxBordersAll, cxbsNormal, taCenter, vaCenter,
False, False, IntToStr(AIndicatorViewInfo.GridRecord.Index + 1),
AStyle.Font, AStyle.TextColor, AStyle.Color);
ADone := True;
end;
procedure TCellLevelMultiselectDemoMainForm.TableViewStylesGetHeaderStyle(
Sender: TcxGridTableView; AColumn: TcxGridColumn; out AStyle: TcxStyle);
begin
if AColumn = nil
then exit;
if AColumn.Selected then
AStyle := styleSelected
else
AStyle := styleNormal;
end;
procedure TCellLevelMultiselectDemoMainForm.CreateSpreadSheet;
begin
TableView.BeginUpdate;
try
CreateColumns;
CreateRows;
finally
TableView.EndUpdate;
end;
end;
procedure TCellLevelMultiselectDemoMainForm.CreateColumns;
var
I: Integer;
AColumn: TcxGridColumn;
begin
for I := 0 to ColumnCount - 1 do
begin
AColumn := TableView.CreateColumn;
AColumn.Caption := GetColumnCaption(I);
AColumn.HeaderAlignmentHorz := taCenter;
AColumn.DataBinding.ValueType := 'Integer';
end;
end;
procedure TCellLevelMultiselectDemoMainForm.CreateRows;
var
I, J: Integer;
begin
TableView.DataController.RecordCount := RecordCount;
Randomize;
for I := 0 to RecordCount - 1 do
for J := 0 to ColumnCount - 1 do
TableView.DataController.SetValue(I, J, Random(100));
end;
function TCellLevelMultiselectDemoMainForm.GetColumnCaption(Index: Integer): string;
const
AlphabetSymbolCount = Integer('Z') - Integer('A') + 1;
begin
if Index div AlphabetSymbolCount > 0 then
Result := GetColumnCaption(Index div AlphabetSymbolCount - 1)
else Result := '';
Result := Result + char(Integer('A') + Index mod AlphabetSymbolCount);
end;
procedure TCellLevelMultiselectDemoMainForm.SetColumnsSelected(
AFromColumn, AToColumn: TcxGridColumn; ASelected: Boolean);
var
I: Integer;
AFromColIndex, AToColIndex: Integer;
begin
AFromColIndex := AFromColumn.VisibleIndex;
AToColIndex := AToColumn.VisibleIndex;
if AFromColIndex > AToColIndex then
begin
I := AToColIndex;
AToColIndex := AFromColIndex;
AFromColIndex := I;
end;
TableView.BeginUpdate;
try
for I := AFromColIndex to AToColIndex do
TableView.VisibleColumns[I].Selected := ASelected;
finally
TableView.EndUpdate;
end;
end;
procedure TCellLevelMultiselectDemoMainForm.TableViewMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
var
AHitTest: TcxCustomGridHitTest;
AColumn: TcxGridColumn;
begin
AHitTest := TableView.GetHitTest(X, Y);
if not (AHitTest is TcxGridColumnHeaderHitTest) then
Exit;
AColumn := (AHitTest as TcxGridColumnHeaderHitTest).Column;
TableView.BeginUpdate;
try
if ssShift in Shift then
begin
SetColumnsSelected(TableView.Controller.CellSelectionAnchor,
FAnchorLinkedAreaLastColumn, False);
SetColumnsSelected(TableView.Controller.CellSelectionAnchor, AColumn, True);
end
else
begin
if ssCtrl in Shift then
AColumn.Selected := True
else
TableView.Controller.SelectColumns(AColumn, AColumn);
AColumn.Focused := True;
TableView.Controller.CellSelectionAnchor := AColumn;
end;
TableView.DataController.SelectAll;
FAnchorLinkedAreaLastColumn := AColumn;
finally
TableView.EndUpdate;
end;
end;
Saygılar :D
end.
eyvallah kuzen kod işimi gordu.....
Sağolasın....
Sağolasın....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

- Ademkoysuren
- Üye
- Mesajlar: 83
- Kayıt: 26 Ağu 2003 03:07
- Konum: KIRŞEHİR
- İletişim:
http://www.devexpress.com
paralı olarak satılmaktadır. demosuda vardı sanırım.
paralı olarak satılmaktadır. demosuda vardı sanırım.
-
- Üye
- Mesajlar: 380
- Kayıt: 31 Eki 2005 03:26
bunu okuMANDRAKE yazdı:bu cxgridi nasıl temin edebiliriz hocam ben çok aradım ama bulamadım kusura bakmayınm yeri değil belki burası ama:(
viewtopic.php?t=14353
teşekkürler dostum. ben bir iki tane indirdim ama setup olayı yok baya bi folder çıkıyo içinden delphiye bunu nasıl entegre ediyoruz anlayamadım??turkcanfidan yazdı:bunu okuMANDRAKE yazdı:bu cxgridi nasıl temin edebiliriz hocam ben çok aradım ama bulamadım kusura bakmayınm yeri değil belki burası ama:(
viewtopic.php?t=14353
-
- Üye
- Mesajlar: 380
- Kayıt: 31 Eki 2005 03:26