Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.012 c
6-99235
nickolayLI
2002-11-01 08:26
2002.12.30
Найти в сети комп с заданным портом


1-99063
GrayWolf
2002-12-15 21:43
2002.12.30
MDI-приложения


3-98971
BSD
2002-12-09 17:01
2002.12.30
Использование плана в тригере


1-99178
Zipper
2002-12-19 02:40
2002.12.30
Как открыть документ Word в RichEdit e?


1-99065
Z-man7777
2002-12-19 13:57
2002.12.30
Как быть с этим?!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский