Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заголовок StringGrida [D7, WinXP]


Квэнди ©   (2004-09-10 10:17:00) 

Здравствуйте, подскажите пожалуйста, можно ли как- нибудь TheardControl привязать к StringGrid, и еще вопрос: можно ли как- нибудь запретить изменение размера секций в TheardControl?


_student   (2004-09-10 20:01:00) [1]

Тама вылазеит ошибка когда SG прокручивать по горизонтали. Чё то я не смог исправить.


Квэнди   (2004-09-10 19:57:00) [2]

Спасиба, проверю, просто мне казалось что TheardControl  несколько поинтересней будет, но попробую и этот вариант, благодарю за помощь.


_student   (2004-09-10 19:46:00) [3]

Недавно делал. Посмотри. Может подойдет
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, Buttons;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   SpeedButton1: TSpeedButton;
   procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormCreate(Sender: TObject);
   procedure MyClick(Sender: TObject);
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 cx, cy: integer;
begin
 StringGrid1.MouseToCell(x, y, cx, cy);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i, j: integer;
begin
 StringGrid1.RowHeights[0]:=18;
 for i := 1 to stringgrid1.colcount - 1 do
   with TSpeedButton.Create(self) do
   begin
     Parent := StringGrid1;
     Width := StringGrid1.ColWidths[i];
     Height := StringGrid1.RowHeights[0];
     name := 'i' + inttostr(i);
     Caption := inttostr(i);
     GroupIndex := 1;
     OnClick := MyClick;
   end;
 for i := 1 to stringgrid1.colcount - 1 do
   for j := 0 to stringgrid1.rowcount - 1 do
     StringGrid1.Cells[i, j] := inttostr(random(100));
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 if (ARow = 0) and(acol>0) then
 begin
   (FindComponent('i' + inttostr(ACol)) as TSpeedButton).Left := Rect.Left;
   (FindComponent('i' + inttostr(ACol)) as TSpeedButton).top := Rect.top;
 end;
end;

procedure TForm1.MyClick(Sender: TObject);
var
 i, j, k, m: integer;
 buf: string;
begin
 i := strtoint(copy((sender as TSpeedButton).Name, 2, length((sender as
   TSpeedButton).Name)));
 for j := 1 to StringGrid1.RowCount - 1 do
 begin
   for k := 1 to StringGrid1.RowCount - 2 do
   begin
     if strtoint(StringGrid1.Cells[i, k]) > strtoint(StringGrid1.Cells[i, k +
       1]) then
     begin
       for m := 0 to StringGrid1.ColCount - 1 do
       begin
         buf := StringGrid1.Cells[m, k];
         StringGrid1.Cells[m, k] := StringGrid1.Cells[m, k + 1];
         StringGrid1.Cells[m, k + 1] := buf;
       end;
     end;
   end;
 end;
end;

end.


Квэнди   (2004-09-10 19:29:00) [4]

Насчет заголовка: тогда не будет эффекта нажатия кнопки... а насчет строк.. не известно от 20 до 200 примерно... а насчет Tlistview надо будет подумать..


MU   (2004-09-10 10:57:00) [5]

еще можно TListView использовать.
ViewStyle := vsReport
он сам тебе и отсортирует. но можно и самому


MU   (2004-09-10 10:55:00) [6]

еще можно TListView использовать.
сортировка? сколько там строк будет?


MU   (2004-09-10 10:52:00) [7]

можно и так отследить нажатие на заголовке и
если Row = 0 делать что-то
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var P : TGridCoord;
begin
  P := StringGrid1.MouseCoord(X, Y);
  ShowMessage(IntToStr(P.Y) + IntToStr(P.X));
end;


Квэнди   (2004-09-10 10:31:00) [8]

Кнопки, мне нужно сделать, чтоб ввиде заголовка было некое количество кнопок, (кароч для сортировки).. TheardControl очень здорово для этого подходит...


MU   (2004-09-10 10:25:00) [9]

А зачем? Чем заголовок StringGrid плох?


Квэнди   (2004-09-10 10:22:00) [10]

Ок, эт я понял, а привязать его к StringGrid ? или придется руками просто ставить его на заголовок, и руками же регулировать размеры секций под каждую ячейку?...


MU   (2004-09-10 10:20:00) [11]

1) Самому обрабатывать
2) MaxSize := MinSize


Наверх

Титульная страница Поиск, карта сайта Написать письмо