и пак за DBGRID ....

11 отговора 0 прегледа
#1

и пак за DBGRID ....

тъй, имам си го значи и си имам много колони..... и редове...
Как по дяволите, когато юзерът се придвижва в грида с хоризонталния скрол, да замръзя две колони от грида и да се виждат????, в което и да е положение се намира хор. скрол....

май не го обясних много добре, обаче тотално зациклих....

Отговор
в отговор на AйeзCeдaй #2

Re: и пак за DBGRID ....

Може, ама си е бая труд. По-лесно и бързо е да ползваш друг компонент, например [линк]

чети и дишай по-леко
Отговор
в отговор на AйeзCeдaй #3

Re: и пак за DBGRID ....

Май разбрах какво искаш - нещо като FixedCols на StringGrid, но май не ноже да стане. Аз исках и друго - да забраня разместването на колони в DBGrid, но и това май не може. По-рано правех друг екшън - прехвърлях базата данни в StringGrid и обратно и това ми даваше някои екстрички - например това, което ти искаш, а и някои други неща. Но си е голяма хамалогия - разработка на специализирани процедури, защити и др.

Отговор
в отговор на Pechenia #4

Re: и пак за DBGRID ....

Мда... тъпото е, че друг компонент не мога да използвам ..... поне за сега...

прерових денс нета, ама за тоя грид нищо не открих

Имам и друга идея... два грида към един и същ датасет и в единия да се виждат двете(или трите колони) и във втория останалите данни....
това първоначална идея, доколко е удачна и осъществима ...хм, ще видим..
утре ще го мъча...

Редактирано от AйeзCeдaй на

Отговор
в отговор на Pechenia #5

Re: и пак за DBGRID ....

Хм, имам още една идея...

А ако скролът не се появява за първите две колони? Те ще са заковани и няма да се придвижват...

И естестено следващият въпрос е как аджеба мое да стане ?

Отговор
в отговор на AйeзCeдaй #6

Re: и пак за DBGRID ....

Тоя грид можеш да го дръпнеш от Torry.net . Има Source но до версия 5 на Delphi.

Отговор
в отговор на AйeзCeдaй #7

Re: и пак за DBGRID ....

използвай руската DBGridEh -може да замразява колони . За рускоговорящите е безплатна

Отговор
в отговор на gydi #8

Re: и пак за DBGRID ....

мда... супер, обаче за съжаление поради ред причини (частична политика на фирмата, разни custom dll и т.н).... не мога да използвам друг компонент
тъй че ша са боря с т'ва гридче... и накрая ще ме победи

Отговор
в отговор на Pechenia #9

Re: и пак за DBGRID ....

Момчета, срам не срам пратих майл на Зарко и ... пичът ми отговори след два часа... Евала....
Поствам дословно майла му....

Hi

You can use the following code, but it has some strange side-effects !

type
TMyDBGrid = class(TDBGrid);


procedure TForm1.FormCreate(Sender: TObject);
begin
TMyDBGrid(DBGrid1).FixedCols := 2;
end;

..............................................
Zarko Gajic
About Guide to Delphi Programming

и ооо, Богове, наистина първата ми колонка "замръзна", когато скролвах от ляво на дясно... Супер....
с тази разлика, е TMyDBGrid(DBGrid1).FixedCols := 2; , го пльоснах в
TForm1.DBGrid2CellClick(Column: TColumn); и да първата колона не се мести...
продължавам ....

Супер, супер.... адски съм на кеф...

Редактирано от AйeзCeдaй на

Отговор
в отговор на AйeзCeдaй #10

Re: и пак за DBGRID ....

Зарко е пич, няма от какво да се срамуваш.



Mixy
Отговор
в отговор на AйeзCeдaй #11

Re: и пак за DBGRID ....

Сега като виждам какво ти е отговорил се сещам, че този подход е обяснен в книгите на Марко Канту (Mastering Delphi - аз имам книгата за Delphi5 и там го погледнах).
Ето това му е примера, но кой да се сети за него, а и Канту не препоръчва подобен подход - само в изключителни случаи.
Ако някой е свалял кодовете на програмите за Delphi 7, намира се в ..md7code\02\DBGridCol

unit dbcolform;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, DB, DBTables;

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Label1: TLabel;
procedure DBGrid1ColEnter(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

type
TFake = class (TDBGrid);

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
Label1.Caption := Format (
'Column: %2d; Row: %2d',
[TFake (DbGrid1).Col,
TFake (DbGrid1).Row]);
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
DBGrid1ColEnter (sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.Active := True;
end;

end.

Отговор
в отговор на TRN #12

Re: и пак за DBGRID ....

Шъ трябва да си обновя книжките...
Аз идвам от Developer 6 на Oracle, преди това VB6, и книгите ми за делфи са доста кът....
Когато започнах нямах си и идея от Делфи, но с бързи скорости напредвам...

Отговор