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

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.
…начиная с 1001. Смотрите другие файлы…
begin
Label1.Caption := TEdit(Sender).Name;
end;
end.
Включение ComboBox в TDBGrid
Delphi 1
Вот основные шаги чтобы сделать это:
1. Создавайте и рисуйте TComboBox (CB) при получении ввода ячейки необходимой колонки табличной сетки
2. Получайте текущее значение поля (если имеется) и помещайте его в CB
3. После всех манипуляций, поместите новое значение обратно в поле
4. Избавляемся от CB
DBLookupComboBox
Предустановка DBLookupComboBox
Delphi 1
Вы можете редактировать ваш источник данных. Говорят, вы хотите сохранить ваши lookuping-данные из таблицы customer в таблицу sales – 'Cust No'? Вы можете просто проинициализировать поля (задать значение по умолчанию), редактируя таблицу sales «Cust No»
with tbSales do begin
Edit;
FieldByName('Cust No').AsInteger := 1;
Post;
end;
Сортировка DBLookupComboBox по вторичному индексу
Delphi 1
Одним из способов вывести выши данные в другом порядке сортировки является использование TQuery и включение в SQL-запрос ключевого слова «order by». После чего вы можете установить этот запрос как DataSource в вашем DBLookupComboBox.
ПРИМЕР:
Если у вас имеется таблица Customer, содержащая «Customer_No» и «Customer_Name», и индексированная по Customer_No, то ваш запрос должен содержать в редакторе списка строк (свойство SQL) для вашего TQuery следующую строку:
select Customer_No, Customer_Name from Customer
order by Customer_Name
Значение DBLookupComboBox
Я думаю что у меня есть то, что вы хотите. Если вы обратитесь к свойству LookUpValue, то вы получите поле, которое .... ищете.
Я надеюсь что помог вам.
unit clookup;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBLookup;
type
TDBJustLookupCombo = class(TDBLookupCombo)
private
{ Private declarations }
protected
{ Protected declarations }
function GetLValue: TField;
public
{ Public declarations }
property LookUpValue: TField read GetLValue;
published
{ Published declarations }
end;
TDBJustLookupList = class(TDBLookupList)
private
{ Private declarations }
protected
{ Protected declarations }
function GetLValue: TField;
public
{ Public declarations }
property LookUpValue: TField read GetLValue;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Data Controls', [TDBJustLookupList, TDBJustLookupCombo]);
end;
function TDBJustLookupCombo.GetLValue: TField;
begin
Result := LookupSource.DataSet.FieldByName(LookUpField);
end;
function TDBJustLookupList.GetLValue: TField;
begin
Result := LookupSource.DataSet.FieldByName(LookUpField);
end;
end.
DBMemo
Копирование содержимого DBMemo в DBMemo другого поля
Delphi 1
Попробуй:
DBMemo6.Lines:=DBMemo5.Lines.Assign;
Поиск текста в DBMemo
Delphi 1
Попробуйте так:
"Подключите" следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.
procedure TMainForm.FindDialog1Find(Sender: TObject);
var
Buff, P, FT : PChar;
BuffLen : Word;
begin
With Sender as TFindDialog do begin
GetMem(FT, Length(FindText) + 1);
StrPCopy(FT, FindText);
BuffLen:= DBMemo1.GetTextLen + 1;
GetMem(Buff,BuffLen);
DBMemo1.GetTextBuf(Buff,BuffLen);
P:= Buff + DBMemo1.SelStart + DBMemo1.SelLength;
P:= StrPos(P, FT);
if P = NIL then MessageBeep(0)
else begin
DBMemo1.SelStart:= P – Buff;
DBMemo1.SelLength:= Length(FindText);
end;
FreeMem(FT, Length(FindText) + 1);
FreeMem(Buff,BuffLen);
end;
end;
Попробуйте так:
«Подключите» следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.
begin
DBMemo1.SelStart:= P – Buff;
DBMemo1.SelLength:= Length(FindText);
end;
FreeMem(FT, Length(FindText) + 1);
FreeMem(Buff,BuffLen);
DBMemo1.SetFocus;
end;
DBNavigator
Настройки всплывающих подсказок в DBNavigator во время выполнения приложения
Возможно ли изменение свойства Hints компонента TDBNavigator во время выполнения программы?
Это должно работать:
procedure TForm1.Button1Click(Sender: TObject);
var ix : integer;
begin
With DBNavigator1 do
for ix := 0 to ControlCount - 1 do
if Controls[ix] is TNavButton then
with Controls[ix] as TNavButton do
case index of
nbFirst : Hint := 'Подсказка для кнопки First';
nbPrior : Hint := 'Подсказка для кнопки Prior';
nbNext : Hint := 'Подсказка для кнопки Next';
nbLast : Hint := '';
{……}
end;
end;
– Freddy Hansson
Выключение кнопок в DBNavigator
Delphi 1
{ Расширение DBNavigator: позволяет разработчику включать и выключать
отдельные кнопки через методы EnableButton и DisableButton }
unit GNav;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls;
type TMyNavigator = class(TDBNavigator)
public
procedure EnableButton(Btn : TNavigateBtn);
procedure DisableButton(Btn : TNavigateBtn);
end;
procedure Register;
implementation
procedure TMyNavigator.EnableButton(Btn : TNavigateBtn);
begin
Buttons[Btn].Enabled := True;
end;
procedure TMyNavigator.DisableButton(Btn : TNavigateBtn);
begin
Buttons[Btn].Enabled := False;
end;
procedure Register;
begin
RegisterComponents('Samples', [TMyNavigator]);
end;
end.
Работа в коде с кнопками DBNavigator
Delphi 1
Я думаю вам поможет следующий пример (взят из электронной справки по DELPHI), показывающий код нажатой кнопки. Я видел пару вопросов о том, как изменять кнопки навигатора в зависимости от состояния редактируемой вами записи. Если вам необходимо подтверждение действий пользователя, то необходимо каким-то образом организовать дополнительный перехватчик. Как это сделать, я, честно говоря, еще не думал.
Прежде, чем вы сделаете любой постинг или изменение данных, убедитесь, что таблица находится в режиме редактирования. Посмотрите описание свойства state в электронной справке по DELPHI. Там подробно рассказано как работать с ним.
Следующий код определяет нажатую кнопку навигатора и выводит сообщение с ее именем.
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var BtnName: string;
begin
case Button of
nbFirst : BtnName := 'nbFirst';
nbPrior : BtnName := 'nbPrior';
nbNext : BtnName := 'nbNext';
nbLast : BtnName := 'nbLast';
nbInsert : BtnName := 'nbInsert';
nbDelete : BtnName := 'nbDelete';
nbEdit : BtnName := 'nbEdit';
nbPost : BtnName := 'nbPost';
nbCancel : BtnName := 'nbCancel';
nbRefresh: BtnName := 'nbRefresh';
end;
MessageDlg('Была нажата кнопка' + BtnName, mtInformation, [mbOK], 0);
end;
Edit
Денежное поле редактирования
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Советы по 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", комментарии и мнения людей о произведении.