Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Название:Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание
…начиная с 1001. Смотрите другие файлы…
Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Result := True;
End;
End;
ProcedureSetColor(Instance: TComponent; Color: TColor);
VarPropInfo : PPropInfo;
Begin
PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'Color');
If(PropInfo <> Nil) And(PropInfo^.PropType^.Kind = tkInteger) ThenTypInfo.SetOrdProp (Instance, PropInfo, Ord(Color));
End;
begin
ForControl := 0 ToControlCount-1 Do
IfGetDataSource(Controls[Control]) AndGetDataField(Controls[Control]) And
(DataSource.DataSet <> Nil) And
DataSource.DataSet.FieldByName(DataField).Required Then
SetColor(Controls[Control], clRed);
end;
– Robert Wittig
Insert/Override с помощью DBEdit
Сама Windows не позволяет это сделать, но я нашел как это обойти с помощью одной хитрости, и, похоже, это классно работает (надеюсь вы получите даже больше, чем вы хотите :).
Сначала я добавляю к моей форме свойство (и соответствующие переменные и процедуры), наподобие этому:
private
FinsertMode: boolean;
procedureSetInsertMode(value: boolean);
public
propertyinsertMode: boolean readFinsertMode writeSetInsertMode;
В обработчике создания события формы я инициализирую его:
procedureTForm1.FormCreate(Sender: TObject);
begin
{инициализация}
insertMode := True;
end;
Также для этого свойства я создаю процедуру SetInsertMode, которая с помощью TPanel с именем Panel1 извещает пользователя о текущем режиме работы:
procedureTForm1.SetInsertMode(value: boolean);
begin
FinsertMode := value;
ifFinsertMode thenPanel1.Caption := 'ВСТАВКА'
elsePanel1.Caption := 'ПЕРЕЗАПИСЬ';
end;
Затем я добавляю три обработчика событий (OnKeyDown, OnKeyPress, OnEnter) для каждого моего DBEdit (можно при наличии нескольких компонентов создать один общий обработчик для всех):
procedureTForm1.DBEditKeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);
begin
if(Key = VK_INSERT) theninsertMode := notinsertMode;
end;
procedureTForm1.DBEditKeyPress(Sender: TObject; varKey: Char);
begin
if( notinsertMode) and(Sender isTDBEdit) then(Sender asTDBEdit).SelLength := 1
else(Sender asTDBEdit).SelLength := 0;
end;
procedureTForm1.DBEditEnter(Sender: TObject);
begin
insertMode := True;
end;
Банзай! Похоже это работает, хотя я и не имел достаточного времени протестировать это. Естественно, вы можете изменить это по просьбе вашего заказчика (например, я всегда сбрасывал режим во вставку при перемещении к другому компоненту DBEedit). Все вышесказанное должно также работать без проблем и с компонентами Edit.
– Denis Sarrazin
Как очистить DBEdit
Delphi 1
Пробую так:
myDbEdit.Text := '';
или адрес TField, если вы хотите так:
TableNameMyField.Value := '';
Ответ:
Table1.Edit;
Table1.FieldByName(DBEdit1.FieldName).Clear;
DBGrid
Dbgrid и множественный выбор
Delphi 2
Тема: TDBGrid и множественный выбор записей (Multi-Selecting Records)
При включении флажка [dgMultiSelect] в свойстве-наборе Options компонента DBGrid, вы добавляете к табличной сетке возможность множественного выбора записей.
Выбранные вами записи представлены в виде закладок и храняться в свойстве SelectedRows.
Свойство SelectedRows является объектом, имеющим тип TBookmarkList. Его свойства и методы описаны ниже.
// property SelectedRows: TBookmarkList read FBookmarks;
// TBookmarkList = class
// public
{* Метод Clear освобождает все выбранные в DBGrid записи *}
// procedure Clear;
{* Метод Delete удаляет все выбранные строки из набора данных *}
// procedure Delete;
{* Метод Find определяет наличие закладки в выбранном списке. *}
// function Find(const Item: TBookmarkStr;
// var Index: Integer): Boolean;
{* Метод IndexOf возвращает индекс закладки, расположенной в свойстве Items. *}
// function IndexOf(const Item: TBookmarkStr): Integer;
{* Метод Refresh возвращает логическую величину, уведомляющую о том, что в то время, пока в табличной сетке была выбрана запись, были добавлены (удалены) какие-то данные. Метод Refresh может быть использован для обновления списка выбранных записей для уменьшения возможности получения удаленной записи. *}
// function Refresh: Boolean; True = orphans found
{* Свойство Count возвращает количество выбранных в настоящий момент элементов в DBGrid *}
// property Count: Integer read GetCount;
{* Свойство CurrentRowSelected содержит логическую величину, зависящую от того, выбрана текущая строка или нет. *}
// property CurrentRowSelected: Boolean
// read GetCurrentRowSelected
// write SetCurrentRowSelected;
{* Свойство Items – TStringList TBookmarkStr *}
// property Items[Index: Integer]: TBookmarkStr
// read GetItem; default;
// end;
unitUnit1;
interface
usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables;
typeTForm1 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
Count: TButton;
Selected: TButton;
Clear: TButton;
Delete: TButton;
Select: TButton;
GetBookMark: TButton;
Find: TButton;
FreeBookmark: TButton;
DataSource1: TDataSource;
procedureCountClick(Sender: TObject);
procedureSelectedClick(Sender: TObject);
procedureClearClick(Sender: TObject);
procedureDeleteClick(Sender: TObject);
procedureSelectClick(Sender: TObject);
procedureGetBookMarkClick(Sender: TObject);
procedureFindClick(Sender: TObject);
procedureFreeBookmarkClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Bookmark1: TBookmark;
z: Integer;
implementation
{$R *.DFM}
//Пример использования свойства Count
procedureTForm1.CountClick(Sender: TObject);
begin
ifDBgrid1.SelectedRows.Count > 0 then begin
showmessage(inttostr(DBgrid1.SelectedRows.Count));
end;
end;
//Пример использования свойства CurrentRowSelected
procedureTForm1.SelectedClick(Sender: TObject);
begin
ifDBgrid1.SelectedRows.CurrentRowSelected thenshowmessage('Выбрана');
end;
//Пример использования метода Clear
procedureTForm1.ClearClick(Sender: TObject);
begin
dbgrid1.SelectedRows.Clear;
end;
//Пример использования метода Delete
procedureTForm1.DeleteClick(Sender: TObject);
begin
DBgrid1.SelectedRows.Delete;
end;
Интервал:
Закладка: