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

Вниз

Календарь под кнопочкой   Найти похожие ветки 

 
Шурик Ш   (2002-10-31 13:51) [0]

Подскажите пожалуйста, как в DBGrid под поле c кнопочкой "..." засунуть календарь, т.е. при щелчке на кнопку появлялся календарь, а при выборе даты, она попадала в поле? Причем, хотелось бы, чтобы календарь открывался "по месту" (под редактируемой ячейкой), а не по середине экрана.


 
Андрей Прокофьев   (2002-10-31 13:53) [1]

У колонки DBGrida установить ButtonStyle и в событии OnButtonClick делать, что хотите.


 
Шурик Ш   (2002-10-31 13:56) [2]

Это я понимаю! Я не знаю как сделать, то что я хочу (какой лучше компонент использовать, как его подвязать по месту...)


 
MsGuns   (2002-10-31 14:19) [3]

Здесь пример рисовки панели с ListView, но вместо него полжи календарь, и по клику делай то же, что по двойному на ListView
Данные вместо лабелей пиши в переменные.


unit Unit1;

interface

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

type
TForm1 = class(TForm)
Database1: TDatabase;
Query1: TQuery;
Query1Schet: TStringField;
Query1SchSub: TStringField;
Query1SchName: TStringField;
Query1SchFully: TStringField;
Query1SchBal: TStringField;
Query1SchAnPt1: TStringField;
Query1SchAnPt2: TStringField;
Query1SchAnPt3: TStringField;
Query1SchAnPt4: TStringField;
Query1SchAnPt5: TStringField;
Query1SchAnPt6: TStringField;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Panel1: TPanel;
ListView1: TListView;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Label4: TLabel;
procedure DBGrid1EditButtonClick(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure ListView1Enter(Sender: TObject);
procedure ListView1Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Rct: TRect;

procedure GridOnTop;
procedure GridOnBottom;
implementation

uses Types;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
it: TListItem;
begin
Form1.Database1.Connected := true;
Form1.Query1.Prepare;
Form1.Query1.Open;
if Form1.Query1.Active then
Form1.Query1.Close;
Form1.Query1.Open;
Form1.Query1.First;
ListView1.Items.Clear;
while not Form1.Query1.Eof do
begin
it := ListView1.Items.Add;
it.Caption := Form1.Query1.FieldByName("Schet").AsString;
it.SubItems.Add(Form1.Query1.FieldByName("SchSub").AsString);
it.SubItems.Add(Form1.Query1.FieldByName("SchName").AsString);
Form1.Query1.Next;
end;
Form1.Query1.First;
Form1.Panel1.Visible := false;
Form1.Panel1.Height := 200;
GridOnTop;
end;

procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
// Определить левый верхний угол панели
if Form1.Button1.Caption="Bottom" then
Form1.Panel1.Top := Rct.Bottom+Form1.DBGrid1.Top
else
Form1.Panel1.Top := Rct.Top+Form1.DBGrid1.Top-Form1.Panel1.Height+3;
Form1.Panel1.Left := Rct.Left+Form1.DBGrid1.Left+4; //-Form1.Panel1.Height;
Form1.Panel1.Visible := true;
Form1.ListView1.SetFocus;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
Form1.Label4.Caption := "";
if gdSelected in State then
begin
Rct := Rect;
Form1.Label4.Caption := IntToStr(DataCol);
end;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
var
it: TListItem;
begin
it := ListView1.Items[ListView1.ItemIndex];
Form1.Label1.Caption := "Счет "+it.Caption;
Form1.Label2.Caption := "Субсчет "+it.SubItems[0];
Form1.Label3.Caption := "Имя "+it.SubItems[1];
Form1.Panel1.Hide;
end;

procedure TForm1.ListView1Enter(Sender: TObject);
begin
Form1.Label1.Caption := "";
Form1.Label2.Caption := "";
Form1.Label3.Caption := "";
end;

procedure TForm1.ListView1Exit(Sender: TObject);
begin
Form1.Panel1.Hide;
end;

procedure GridOnTop;
// Грид наверх
begin
Form1.DBGrid1.Top := 0;
Form1.Button1.Caption := "Bottom"
end;

procedure GridOnBottom;
// Грид вниз
begin
Form1.DBGrid1.Top := Form1.ClientHeight-Form1.DBGrid1.Height;
Form1.Button1.Caption := "Top";
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Form1.Button1.Caption = "Bottom" then
GridOnBottom
else
GridOnTop;
end;

end.



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

Форум: "Базы";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-69271
MAXL
2002-11-09 17:24
2002.11.21
Помогите написать прогу, которая отсеивает шумы и помехи TV-FM-Tu


3-69120
novill
2002-11-04 09:44
2002.11.21
Как узнать значение ячейки DBGRID, пока ее правит пользователь?


3-69203
Alek_1
2002-10-23 01:44
2002.11.21
Индексы в парадоксе!


3-69098
Sers
2002-11-02 10:34
2002.11.21
select * from Table - не работает


3-69102
Cheester[X3]
2002-11-02 16:38
2002.11.21
Можно ли связать StringGridы c DBGridaми





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский