![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как убрать нули из DBEdit
Александр_2012 © (2012-10-18 10:30:00)Доброго дня. Есть программа, содержащая порядка 100 DBEdit, большинство которых привязаны к полям типа Integer, со значением по умолчанию 0 . Всё работает, но раздражает вывод ненужных нулей. Знаю, что можно у TField в событии OnGetText настроить любой формат вывода, но проблема в том, что не хотелось бы загружать жестко все поля БД в OraQuery и на каждое поле писать обработчик OnGetText. Можно ли написать процедуру общую для всех компонентов (работающую, например через Sender), которая обеспечила бы выполнение требуемого, к какому компоненту и событию её привязать?
Ega23 (2012-10-18 17:15:00) [21]
> Прошу объяснить как применить этот замечательный код (к
> чему привязать, откуда на него сослаться)
unit Unit50;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm50 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
private
procedure ButtonOnClick(Sender: TObject);
public
end;
var
Form50: TForm50;
implementation
{$R *.dfm}
//*****************************************************************************
{ TForm50 }
procedure TForm50.ButtonOnClick(Sender: TObject);
begin
ShowMessage(TButton(Sender).Caption);
end;
procedure TForm50.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TButton then
TButton(Components[i]).OnClick := ButtonOnClick;
end;
end.
Кнопок, как ты понимаешь, можно накидать хоть 100500, для всех OnClick будет одинаков.
Jeer (2012-10-18 17:09:00) [22]
> Александр_2012 (18.10.12 16:39) [13]
1. Вам или рано или вообще не следует заниматься программированием.
Не, ну бывает так - мозги сложены под "лицезрение", а не аналитику.
2. Вам сказано и сделано все, чтобы Вы поняли и применили.
Если не хватает, значит не хватает.
Еще раз и внимательнее обратите внимание на [1] и [11,12].
Александр_2012 (2012-10-18 16:39:00) [23]Капитану-очевидность
Прошу объяснить как применить этот замечательный код (к чему привязать, откуда на него сослаться)
Юнга-неочевидность
Ega23 (2012-10-18 14:20:00) [24]Поправочка:
procedure TForm1.AllGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if Sender.AsString = '0'
then Text:= ''
else Text:= Sender.AsString;
end;
sniknik (2012-10-18 12:52:00) [25]> Хотелось бы пример. Как это будет выглядеть.
блин... чувствую себя капитаном очевидность... пример.
procedure TForm1.AllGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if Sender.AsString = '0'
then Text:= ''
else Sender.AsString;
end;
Александр_2012 (2012-10-18 12:47:00) [26]> и на каждое поле писать обработчик OnGetText.
напиши один на все.
Хотелось бы пример. Как это будет выглядеть.
sniknik (2012-10-18 12:40:00) [27]> Проблема в том, ...
не проблема... не та о которой стоит парится.
но если есть желание то всегда можно вернутся к первому предложенному варианту - sniknik © (18.10.12 10:53) [1]
Александр_2012 (2012-10-18 12:32:00) [28]Идея понятна. Проблема в том, что возвращается более 100 полей, если все их перечислять в запросе, да ещё с преобразованием, то запрос получается очень громоздким.
sniknik (2012-10-18 11:58:00) [29]если исходить из запроса то сделай его чуть сложнее, что кстати будет и более правильным, т.к. указывать * моветон (почему... а, загугли).
замени * на имена полей, где нужны замены 0 на нил тоже замени типа (не знаю оракла, т.что приблизительно) iif(field1 = 0, null, field1) as "field1".
Александр_2012 (2012-10-18 11:46:00) [30]Есть простейший запрос: select * from tablename where ... OraQuery возвращает набор данных, где надо указать, что нули визуализировать в DBEdit-ах не надо.
sniknik (2012-10-18 11:25:00) [31]> Увы, базу генерил не я. И логичнее было бы по умолчанию null.
может потому и поставили 0 дефаултом что хотели его видеть...
sniknik (2012-10-18 11:23:00) [32]> Хотелось бы пример, как обратиться к полю и к соответствующему событию не загружая его в соответствующий DataSet.
???
- не могу доехать до ул. ххх, 13-й автобус не ходит.
- езжай на любом до ххх идут все.
- хотелось бы пример как ездить на автобусе не садясь в него...
???
Александр_2012 (2012-10-18 11:04:00) [33]Увы, базу генерил не я. И логичнее было бы по умолчанию null. Хотелось бы пример, как обратиться к полю и к соответствующему событию не загружая его в соответствующий DataSet.
sniknik (2012-10-18 10:59:00) [34]+
вообще пустое значение в дб компонентах "забито" под null в данных базы, 0 это уже вполне себе конкретное значение.
лучше не заменять. путаницу только внесешь.
sniknik (2012-10-18 10:53:00) [35]> и на каждое поле писать обработчик OnGetText.
напиши один на все.