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

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

вставка в DBGrid значения без потери опции RowSelect [D7, Paradox]


Slisten ©   (2003-04-09 22:01:00) 

Имеется Таблица(DBGrid) с данными в которой в которой визуально выделена вся сточка(RowSelect). Как добится того чтобы при нажатии цифровой клавиши поисходило изменение значения данных в колонке но RowSelect сохронялся,,, Зарание Блогадарен


Sliften   (2003-04-12 03:36:00) [1]

Большое Всем Спасибо!!!


REP   (2003-04-10 12:25:00) [2]

А да еще:

procedure TfMain.eSummaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key=27 Then begin
eSumma.Visible:=False;
DBGrid1.SetFocus;
end Else begin
Case Key of
13,vk_Down:begin
Table1.Edit;
Table1.FieldByName("Summa").AsString:=eSumma.Text;
Table1.Post;
Table1.FlushBuffers;
eSumma.Visible:=False;
DBGrid1.SetFocus;
Table1.Next;
end;
vk_Up:begin
Table1.Edit;
Table1.FieldByName("Summa").AsString:=eSumma.Text;
Table1.Post;
Table1.FlushBuffers;
eSumma.Visible:=False;
DBGrid1.SetFocus;
Table1.Prior;
end;
end;


REP   (2003-04-10 12:18:00) [3]

Если колонка, в которую собираешься вводить одна, то я делал так:
Если начинаешь в гриде вводить цифры. появляется (Visible=True)TEdit:

eSumma - тот самый TEdit;

procedure TfMain.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
If (Key>="0") and (Key<="9") Then begin
eSumma.Visible:=True;
eSumma.SetFocus;
eSumma.Text:=Key;
eSumma.SelStart:=Length(eSumma.Text);
end;
end;


procedure TfMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin

If (gdFocused in state) Then begin
//Эта самая сумма находится в 4-й колонке
eSumma.SetBounds(
Rect.Left+DBGrid1.Left+1+
DBGrid1.Columns[0].Width+1+
DBGrid1.Columns[1].Width+1+
DBGrid1.Columns[2].Width+1,
Rect.Top+DBGrid1.Top+3,
DBGrid1.Columns[3].Width,
Rect.Bottom-Rect.Top-2);

eSumma.Text:=Table1.fieldbyName("Summa").AsString;
end;


Это у меня был список фамилий и сумма начислений к ним. Изменяю в гриде тольуо одну колонку!!!


Соловьев   (2003-04-10 09:28:00) [4]


> ЮЮ © (10.04.03 03:18)

Согласен. Использовать DrawColumnCell.


Mike Kouzmine   (2003-04-10 09:05:00) [5]

Вернее не то. В ДБГридЭх - так возможно. В проперти оптионсэх.


Mike Kouzmine   (2003-04-10 09:03:00) [6]

На BeforeEdit - снимаешь, редактируешь, на AfterPost - ставишь


ЮЮ   (2003-04-10 03:18:00) [7]

Сделать "свой RowSelect", т.е. раскрашивать все поля текушей записи, при этом не теряя возможностей доступа к отдельному полю


mike-d   (2003-04-09 23:44:00) [8]

если я правильно понял вопрос (в чем сомневаюсь), то наверное нет - сдается мне что при RowSelect выбор отдельного поля (колонки) в DBGrid не получится.


Johnmen   (2003-04-09 23:24:00) [9]

> изменение значения данных в колонке

В какой колонке ?


Наверх

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