Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Заголовок StringGrida   Найти похожие ветки 

 
Квэнди ©   (2004-09-10 10:17) [0]

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


 
MU ©   (2004-09-10 10:20) [1]

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


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

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


 
MU ©   (2004-09-10 10:25) [3]

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


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

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


 
MU ©   (2004-09-10 10:52) [5]

можно и так отследить нажатие на заголовке и
если 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;


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

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


 
MU ©   (2004-09-10 10:57) [7]

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


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

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


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

Недавно делал. Посмотри. Может подойдет
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:57) [10]

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


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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
6-1090163874
banderas
2004-07-18 19:17
2004.09.26
net send


14-1094805509
Holy
2004-09-10 12:38
2004.09.26
По мотивам Ночного дозора...


14-1094198873
Holy
2004-09-03 12:07
2004.09.26
Неисповедимы пути...


11-1080626196
Новичёк
2004-03-30 09:56
2004.09.26
Написание сервиса NT с помощью KOL.


14-1094738684
oldman
2004-09-09 18:04
2004.09.26
Развлечемся?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский