小编use*_*103的帖子

物料清单数据库模型

我目前正在开展一个项目,该项目应该帮助我们完成库存控制以及购买我们的最终产品.

我们正处于建模数据库的阶段,其中一个要求是生成BOM(物料清单).

我已经阅读了这个帖子并找到了BOM的示例数据模型:

概念数据模型物理数据模型

在此输入图像描述

但我不确定我完全理解.

我们的最终产品由几个子组件组成,因此每个子组件在product_hierarchy表中是一行,最终产品在该表中也是一行.每个子组件由单独的(原子)部件制成,每个部件在表格中标识tpart(每个部件都有制造商字段,最小重新订购数量和其他特定字段).

在生成BOM时,还应包含所有单独的部分,因此我不完全清楚如何建模数据库:

  1. 单独的部分是一行,product_hierarchy永远不会是一个人的"父"(不再需要表格部分)
  2. product_hierarchy和之间的N:M关系tpart:每个单元有几个部分; 每个部分都可以属于几个单元

我倾向于第二种选择,因为一部分基本上是一个完全不同的实体(有价格,几个可能的供应商,......)而一个组合实体没有外部(如:在我们公司外)的属性.

任何输入都表示赞赏!谢谢!

database-design

14
推荐指数
1
解决办法
2万
查看次数

保持滚动条隐藏在Delphi dbgrid中(即使在调整大小时)

对于我们的dbgrid,我们希望不断隐藏滚动条.由于TDBGrid没有'滚动条'属性,我们使用:

ShowScrollBar(DBGrid1.Handle, SB_VERT, False);
ShowScrollBar(DBGrid1.Handle, SB_HORZ, False);
Run Code Online (Sandbox Code Playgroud)

但是,当我们调整窗口大小(以及包含dbgrid的面板)时,只有在调用上述两种方法后,滚动条才会出现并再次隐藏.

解决方案是在DrawColumnCell中调用这些方法,但这会导致dbgrid闪烁,即使DoubleBuffered设置为true也是如此.

有没有办法永久隐藏滚动条?

提前致谢!

delphi c++builder scrollbar dbgrid c++builder-xe

8
推荐指数
1
解决办法
2万
查看次数

Delphi:来自非模态二级形式的'ShowModal'

我们有一个主要形式和第二个非模态形式的应用程序,可以并排使用.我们的主窗体显示配置列表,而第二个非模态窗体更详细地显示配置.

当我们显示一个模态形式(从第二个非模态形式请求)时,主形式弹出第二个形式的前面,直到我们关闭该模态形式.

我该如何避免这种行为?我已经尝试以不同的方式创建最后一个模态形式('Applicaton.CreateForm','TForm.Create',设置父级),但仍然可以弹出主窗体.

有任何想法吗?

提前致谢!

forms delphi modal-dialog non-modal

4
推荐指数
1
解决办法
2857
查看次数

TStringGrid:为什么 OnKeyDown 之后 OnClick

为什么 Delphi StringGrid 有时会OnClickOnKeyDown?

调试截图:

在此处输入图片说明

我的 OnKeyDown 事件处理程序:

var
  Top: Integer;
  Bottom: Integer;
  CurrentRow: Integer;
begin
  Top := Grid.TopRow;
  Bottom := Grid.TopRow + Grid.VisibleRowCount - 1;
  if (Key = 38) then CurrentRow := Grid.Row - 1
  else if (Key = 40) then CurrentRow := Grid.Row + 1;
  
  // Disable OnClick because sometimes a 'TStringGrid.Click' is called anyway...
  // (when clicking on form top window bar and navigating)
  Grid.OnClick := nil; 
  
  if (CurrentRow < Top - 1) …
Run Code Online (Sandbox Code Playgroud)

delphi onclick onkeydown tstringgrid

3
推荐指数
1
解决办法
1794
查看次数

Delphi PasLibVLC - 无需安装VLC播放器即可使用

在我们的应用程序中,我试图通过TPasLibVlcPlayer组件(http://prog.olsztyn.pl/paslibvlc/)播放流.我成功地做到了这一点,但只有安装了VLC.

目标是使用我们的应用程序部署所需的dll,以便我们可以在没有安装VLC的(Windows)PC上使用我们的应用程序.

问题是:我需要做些什么来完成这项工作?到目前为止,我试图把

  • libvlc.dll
  • libvlccore.dll

在一个单独的文件夹中卸载VLC,然后设置这些dll的路径

PasLibVlcPlayer1.VLC.Path := 'C:\Tools';
Run Code Online (Sandbox Code Playgroud)

然而,当试图播放流时,没有任何反应.我调试并看到加载了libvlc.dll(返回一个句柄)并且可以执行所需的过程(GetProcAddress为所有支持的过程返回指定的addres),但是当调用libvlc_new时(在TPasLibVlc.GetHandle内),这将返回零.

该目录中是否应该有其他dll,或者我需要做些什么才能使其工作?

delphi dll vlc libvlc

1
推荐指数
1
解决办法
3173
查看次数