Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.
…начиная с 1001. Смотрите другие файлы…
procedure TForm3.Button4Click(Sender: TObject);
Var
Control : Integer;
DataSource : TDataSource;
DataField : String;
Function GetDataSource(Instance: TComponent) : Boolean;
Var PropInfo: PPropInfo;
Begin
Result := False;
PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'DataSource');
If (PropInfo <> Nil) And (PropInfo^.PropType^.Kind = tkClass) Then Begin
DataSource := TDataSource(TypInfo.GetOrdProp(Instance, PropInfo));
Result := DataSource <> Nil;
End;
End;
Function GetDataField(Instance: TComponent) : Boolean;
Var PropInfo : PPropInfo;
Begin
Result := False;
PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'DataField');
If (PropInfo <> Nil) And (PropInfo^.PropType^.Kind = tkString) Then Begin
DataField := TypInfo.GetStrProp(Instance, PropInfo);
Result := True;
End;
End;
Procedure SetColor(Instance: TComponent; Color: TColor);
Var PropInfo : PPropInfo;
Begin
PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'Color');
If (PropInfo <> Nil) And (PropInfo^.PropType^.Kind = tkInteger) Then TypInfo.SetOrdProp (Instance, PropInfo, Ord(Color));
End;
begin
For Control := 0 To ControlCount-1 Do
If GetDataSource(Controls[Control]) And GetDataField(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;
procedure SetInsertMode(value: boolean);
public
property insertMode: boolean read FinsertMode write SetInsertMode;
В обработчике создания события формы я инициализирую его:
procedure TForm1.FormCreate(Sender: TObject);
begin
{инициализация}
insertMode := True;
end;
Также для этого свойства я создаю процедуру SetInsertMode, которая с помощью TPanel с именем Panel1 извещает пользователя о текущем режиме работы:
procedure TForm1.SetInsertMode(value: boolean);
begin
FinsertMode := value;
if FinsertMode then Panel1.Caption := 'ВСТАВКА'
else Panel1.Caption := 'ПЕРЕЗАПИСЬ';
end;
Затем я добавляю три обработчика событий (OnKeyDown, OnKeyPress, OnEnter) для каждого моего DBEdit (можно при наличии нескольких компонентов создать один общий обработчик для всех):
procedure TForm1.DBEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_INSERT) then insertMode := not insertMode;
end;
procedure TForm1.DBEditKeyPress(Sender: TObject; var Key: Char);
begin
if (not insertMode) and (Sender is TDBEdit) then (Sender as TDBEdit).SelLength := 1
else (Sender as TDBEdit).SelLength := 0;
end;
procedure TForm1.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;
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables;
type TForm1 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
Count: TButton;
Selected: TButton;
Clear: TButton;
Delete: TButton;
Select: TButton;
GetBookMark: TButton;
Find: TButton;
FreeBookmark: TButton;
DataSource1: TDataSource;
procedure CountClick(Sender: TObject);
procedure SelectedClick(Sender: TObject);
procedure ClearClick(Sender: TObject);
procedure DeleteClick(Sender: TObject);
procedure SelectClick(Sender: TObject);
procedure GetBookMarkClick(Sender: TObject);
procedure FindClick(Sender: TObject);
procedure FreeBookmarkClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Bookmark1: TBookmark;
z: Integer;
implementation
{$R *.DFM}
//Пример использования свойства Count
procedure TForm1.CountClick(Sender: TObject);
begin
if DBgrid1.SelectedRows.Count > 0 then begin
showmessage(inttostr(DBgrid1.SelectedRows.Count));
end;
end;
//Пример использования свойства CurrentRowSelected
procedure TForm1.SelectedClick(Sender: TObject);
begin
if DBgrid1.SelectedRows.CurrentRowSelected then showmessage('Выбрана');
end;
//Пример использования метода Clear
procedure TForm1.ClearClick(Sender: TObject);
begin
dbgrid1.SelectedRows.Clear;
end;
//Пример использования метода Delete
procedure TForm1.DeleteClick(Sender: TObject);
begin
DBgrid1.SelectedRows.Delete;
end;
{*Данные пример проходит в цикле все выбранныезаписи табличной сетки и отображает второеполе набора данных.
Метод DisableControls используется в случае,когда необходимо запретить обновление DBGridпри изменении набора данных. Последняя позициянабора данных сохраняется как TBookmark.
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.