如何在delphi中将整数值转换为boolean

时间:2011-10-05 11:10:28

标签: delphi type-conversion dbgrid

我有一个数据库字段值,它是一个像0和1这样的整数。是否可以转换 将数据加载到数据库网格时,此整数值为布尔值。我期待没有条件检查,比如直接类型转换。

由于

5 个答案:

答案 0 :(得分:3)

我想你想在DBGrid中将数据库字段显示为CheckBox。如果是,请阅读article by Zarko Gajic。它与布尔字段有关,但您可以根据需要轻松修改代码。

答案 1 :(得分:1)

对您的问题最简单的解决方案可能是使用布尔值calcfield。

如果你需要从DBGrid编辑它,它会变得有点棘手(但仍然可能)。

答案 2 :(得分:1)

如果要在DBGrid中显示单词“ True”和“ False”,则应使用 Field 的OnGetText事件,如下所示:

procedure TMyForm.MyDataSetFieldGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
begin
 case Sender.AsInteger of
  0 : Text := 'False';
  1 : Text := 'True';
 else
  Text := '-';
 end;
end;

答案 3 :(得分:0)

在此尝试此示例函数:

 function IntToBooleanStr(AInteger: Integer): string;
 begin
   case AInteger of
     0:begin
         Result := 'False';
       end;
     1:begin
         Result := 'True';
       end 
       else
           Result := 'False';
   end;
 end;

全部,您可以在组合框内使用它来更改事件,以过滤内部具有布尔值的某些逻辑数据。
像这里:

procedure TFrm_Books.ComBox_AvailableFilterChange(Sender: TObject);
begin   
   Table_Book.Filtered := False;
   Table_Book.FilterOptions := [foCaseInsensitive];
   Table_Book.Filter := '';
   Table_Book.Filter := 'Available = ' + IntToBooleanStr(ComBox_AvailableFilter.ItemIndex);
   Table_Book.Filtered := True;
end;

以下是此组合框的DFM代码:

object ComBox_AvailableFilter: TComboBox
  Left = 336
  Top = 120
  Width = 193
  Height = 21
  ItemHeight = 13
  Items.Strings = (
    'Not Available'
    'Available')
  TabOrder = 0
end

我希望此功能可以解决您的问题。

答案 4 :(得分:0)

无法将Integer转换为Boolean。 您可以实现这样的功能

function IntToBool(const AnInt: Integer): Boolean;
begin
   if AnInt = 0 then Result := False
                else Result := True;     
end;