Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
ВнизD6: TListBox Найти похожие ветки
← →
Emigrant (2002-12-17 02:25) [0]Здравствуйте.
Столкнулся с тем, что TListBox не вписывает в себя более 7 объектов типа Вариант. Для желающих, ниже есть код для проверки моего утверждения.
Вопрос извечный: почему и как бороться?
Заранее спасибо.
Константин.
nit untDBViewer;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBTables, Grids, DBGrids, Db, DBCtrls, ComCtrls;
type
TForm1 = class(TForm)
Query1: TQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
Button1: TButton;
DBListBox1: TDBListBox;
ListBox3: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
slFields : Tlist;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
d: variant;
i: integer;
begin
ListBox3.Items.Clear;
Table1.GetFieldNames(ListBox1.Items);
for i:=1 to 7 do
begin
d:= Table1.FieldDefs[i].DataType;
ListBox3.Items.Add(d);
end;
end;
end.
← →
Моджахед (2002-12-17 02:44) [1]Бред какой-то
← →
Моджахед (2002-12-17 02:50) [2]Попробуй
for i:=1 to 7 do
поменять на
for i:=1 to 999997 do
и
ListBox3.Items.Add(d);
на
ListBox3.Items.Add("я не сплю");
Говорять, помогает
← →
Emigrant (2002-12-17 03:10) [3]Юмор принимается. Сарказм нет.
Нефиг делать мне уважаемый что-ли, что по людям с вопросами тыкаться? В Д3...Д6 этот кусок кода проверен. Результат один - сообщение о превышении верхнего предела в 8 для ТЛистБокса.
Обращаться на Борланд тоже не посоветуете надеюсь...
← →
PKT (2002-12-17 04:35) [4]А если
for i:=1 to 7 do
исправить на
for i := 0 to Table1.FieldDefs.Count - 1 ?
← →
Emigrant (2002-12-18 00:11) [5]Увы, это не помогает как и пляски с бубном.
← →
PKT (2002-12-18 03:35) [6]А на кой, собственно, Вам нужен Variant ?
Если Вы хотите в ListBox`е после списка полей получить
список номеров типов полей,
то
for i := 0 to Table1.FieldDefs.Count - 1 do
ListBox3.Items.Add(IntToStr(Ord(Table1.FieldDefs[i].DataType)))
если названия типов полей, то сначала определить
const
TypeNames: array[0..35] of string =
("ftUnknown", "ftString", "ftSmallint", и так далее
);
for i := 0 to Table1.FieldDefs.Count - 1 do
ListBox3.Items.Add(TypeNames[Ord(Table1.FieldDefs[i].DataType)])
Или цель запихать более семи вариантов в ListBox ?
Ну, тогда прав Моджахед (17.12.02 02:50)
← →
Alex Konshin (2002-12-18 04:11) [7]Куда ты собираешься запихнуть variant?
Variant это 16 байт, он никак в 4 байта не влезет.
Происходит неявное преобразование, но обратно ты свой variant не получишь.
Если нужны имена типов, то
uses TypInfo;
function getFieldTypeName( eType : TFieldType ) : String;
var pInfo : Pointer;
begin
pInfo := System.TypeInfo(TFieldType);
if pInfo=nil then Result := nil
else Result := GetEnumName(pInfo,Ord(eType));
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c