我正在尝试创建一个框架,其中包含DBGrid
超过10个表,其中一半字段为默认值,其他字段为每个表独占.
由于列的空间有限,我不想手动配置每个表的每一列,因为它是非常差的质量工作,我想知道一种方法来计算每列内部最大内容的宽度.列,由自己的组件或数据集测量.
有谁知道的方式?世界上有一些具有这种力量的定制组件吗? 根据网格所有可见列中的可见数据,我需要一个实现大小增加和减少的解决方案. 到目前为止,我的解决方案是绘制所选单元格的问题,从所选数据集行中跳出.
注意:请不要关闭我的问题.它与网格的宽度或形状的宽度无关.它是关于所有列宽度以最小化水平滚动条,但不一定隐藏它.
您可能会说在stackOverflow中有很多关于此的讨论,但是大多数都比我需要的更复杂,主要用于其他语言.
我有一个MySQL远程数据库,其中我有一个"帮助"表,其中包含用于填充使用此数据库的动态网站的帮助页面的代码.
我决定制作一个Delphi应用程序来管理该网站,而不是通过网站本身来提高速度和安全性.
我想用一个TRichEdit
来制作帮助文本并使用简单的东西,如对齐,粗体,斜体和带下划线的样式.我不想使用图片和字体.
如何选择丰富的样式文本并将其转换为HTML以放入远程数据库中的BLOB字段,然后如果我想再次编辑它,则重新转换为富文本?
因为我们可以找到一个Property
或者一个Object
使用RTTI
,我们可以在内存中搜索某个function
或者procedure
(不是来自一个对象method
但是来自一个unit
)知道它的名字吗?
如果我们可以,是否可以执行它发送它的参数?
我有一个用Delphi 2006制作的应用程序,用QuickReport打印.由于存在许多错误,我将重建软件的这一部分,以HTML格式生成报告,然后通过某个组件将其发送到打印机.我的问题是,如何/我可以告诉打印机什么时候应该打破HTML的新页面?HTML打印组件上的某些标记或事件?
我想将 PostgreSQL 数据库迁移到 Oracle 12c,例如在下面的表创建中,我发现了一些困难:
代码:
create table nano.pessoa (
id GENERATED BY DEFAULT ON NULL AS IDENTITY,
nome varchar(99) not null,
sobrenome varchar(99) not null,
nascimento_dt date,
registro varchar(32) not null,
fisica_sn bool default true, -- no caso de pf, true, pf, falso
matriz_sn bool default false, -- no caso de pf, é o genero, masculino = true
confirmado_sn bool default false,
constraint pessoa_id primary key(id)
);
create unique index pessoa_juridica_cnpj_ix on pessoas.pessoa …
Run Code Online (Sandbox Code Playgroud) 我创建了这个触发器来将一个值计算值插入到表中的一个字段中,以防用户忘记自己放置数据:
DELIMITER //
CREATE TRIGGER OnNewTableRegistry BEFORE INSERT ON eduardo8_plataforma.tabela
FOR EACH ROW
BEGIN
IF NEW.ut = null THEN
SET NEW.ut = GetUT('tabela');
ELSEIF NEW.ut = '' THEN
SET NEW.ut = GetUT('tabela');
END IF;
END;
//
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
但是我需要对该数据库中的每个表执行相同的操作。是否可以对所有表使用相同的触发器,如果是,我们如何获取在第 6 行和第 8 行中tabela
指定的触发使用它的表的名称?
我需要这样的东西:
DELIMITER //
CREATE TRIGGER OnNewTableRegistry BEFORE INSERT ON (* as _TableName)
FOR EACH ROW
BEGIN
IF NEW._TableName.ut = null THEN
SET NEW._TableName.ut = GetUT(_TableName);
ELSEIF NEW._TableName.ut = '' THEN
SET NEW._TableName.ut = GetUT(_TableName);
END …
Run Code Online (Sandbox Code Playgroud) 在Delphi中,有时我们需要这样做......
function TForm1.EDIT_Click(Sender: TObject);
begin
(Sender As TEdit).Text := '';
end;
Run Code Online (Sandbox Code Playgroud)
...但有时我们需要重复其他对象类的功能,如...
function TForm1.COMBOBOX_Click(Sender: TObject);
begin
(Sender As TComboBox).Text := '';
end;
Run Code Online (Sandbox Code Playgroud)
......因为运营商As
不接受灵活性.它必须知道这个类,以便允许.Text
它来之后()
.
有时候代码会变得类似functions
,procedures
因为我们需要使用类似的视觉控件来做同样的事情,而这些控件是我们无法指定的.
这只是一个使用示例.通常,我在更复杂的代码上使用这些代码来实现许多控件和其他类型对象的标准目标.
是否有替代或技巧使这些任务更灵活?
继续该项目开始于:
如何根据其内容自动调整/缩放DBGrid(或其他类似的)列宽?
如何计算"左"属性以使文本在DBGrid单元格中居中?
当我们调用OnDrawColumnCell并使用Canvas编写文本来代替网格的默认绘制时,当我们想要将其置于单元格中心时,我们如何计算文本的位置?
Delphi应用程序是否可以接收带有对象,其属性和事件分配的dfm文件,并加载所有这些信息,就像它们如何处理使用它编译的内部dfm一样?
我们怎么能这样做?有直接的方法吗?
注意:应用程序已经拥有包含正确类和方法的代码,包括事件.我们还可以远程接收某些可以由我的应用程序读取的脚本,该脚本将创建匹配dfm文件规范所必需的对象.就像Web浏览器解释HTML,css和JS文件一样......
在其他编程语言方面有 20 年的经验,现在我是 Java 新手,感觉自己像个菜鸟程序员......
我使用Indexable
抽象类来扩展我的所有@entity
类,因此我不需要将@Id @GeneratedValue @SequenceGenerator
它们放在所有类上。我也有Auditable
通向@CreatedBy @CreatedDate @ModifiedBy @ModifiedDate
这些继承路径的方法:
现在我注意到我的 99% 的实体类还具有:
@Column(nullable = false, unique = true) private String name;
Run Code Online (Sandbox Code Playgroud)
我想将该行移到类中Indexable
以避免 99% 中的样板代码,但是没有name字段的两个类是重要的可审计类,我不想将所有祖先字段复制到它们只是为了防止其上出现空名称错误。
问题是:如果我在这两个类上覆盖该字段的注释以使其可为空且瞬态,是否可以避免在表上创建该字段并且不会用空名称打扰用户?
class SomeAuditableClass extends Audited {
//@override
@Column(nullable = true) @Transient private String name;
Run Code Online (Sandbox Code Playgroud)
Java中有没有办法重写类变量中的内容?没有多大帮助...