小编NGL*_*GLN的帖子

如何在悬停子元素时设置父元素的样式?

我知道没有CSS父选择器,但是在没有这样的选择器的情况下悬停子元素时是否可以设置元素的样式?

举个例子:考虑一个删除按钮,当悬停时会突出显示要删除的元素:

<div>
    <p>Lorem ipsum ...</p>
    <button>Delete</button>
</div>
Run Code Online (Sandbox Code Playgroud)

通过纯CSS,当鼠标悬停在按钮上时,如何更改此部分的背景颜色?

html css

138
推荐指数
6
解决办法
19万
查看次数

以实际角度旋转位图

曾几何时,在阅读这个问题时,我想知道如何在任何程度上旋转位图,而不是自己摆弄所有的位.最近,其他人也遇到了明显的困难.

已经有很多问题以90°的间隔处理旋转,大多数都不是这个问题,但我想以一个真正的角度旋转.优选地,可以由于旋转而调整图像尺寸,并且为将要添加到图像表面的部分设置定制(透明)背景颜色.然后我假设例程的签名看起来像:

procedure RotateBitmap(Bmp: TBitmap; Angle: Single; AdjustSize: Boolean; 
  BackColor: TColor);
Run Code Online (Sandbox Code Playgroud)

这些答案提到了构建此例程的以下候选:SetWorldTransform,PlgBlt,GDI +,但我希望看到(高效)实现.

delphi image-processing rotation

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

正确的定位方式:在伪元素之前

定位:before:after伪元素的正确方法是什么,比如图片?我一直在用一堆不同的方式搞乱,但它们似乎都不是非常优雅的解决方案.

这就是我想要做的:

在此输入图像描述

这就是我做的:

div.read-more a:before {
    content: url('/images/read_more_arrow_sm.png');
    position: absolute;
    top: 4px;
    left: -15px;
}

<div class="read-more">
    <a href="#">Read More</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我基本上只想让图像与文本对齐.还有另一种方法吗?

如果我可以在:before图像上使用填充和边距,这将是完美的,这应该是你做的.但由于某种原因,这对我来说并不适用.我可以添加水平填充和边距,但顶部和底部填充不会做任何事情.为什么会这样?

css pseudo-element

27
推荐指数
3
解决办法
8万
查看次数

如何确保只运行我的应用程序的单个实例?

Delphi XE VCL是否支持确保只运行单个应用程序实例?

在过去,我使用库代码来控制一直看起来很复杂的Mutex.当我在Delphi XE中开始一个新项目时,我想知道是否需要挖掘旧代码,或者是否已经在XE中内置了支持?或者是否有另一个易于应用的代码,既漂亮又现代?

delphi delphi-xe

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

控制器文件已加载但类不存在

我在Magento中遇到此错误时遇到问题:

"控制器文件已加载,但类不存在".(底部全堆)

我基本上试图遵循这个教程:在Magento中创建新模块"HelloWorld".

...虽然我使用自己的公司/班级名称而不是"你好世界"

我总体上难以在Magento上找到好的文档,而且我很陌生......

谁能提供一些共同的原因,建议或见解?我被淹没,谷歌搜索了几个小时,检查权限和文件结构.你说它的名字.

Trace:
#0 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(306): Mage::exception('Mage_Core', 'Controller file...')
#1 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(282): Mage_Core_Controller_Varien_Router_Standard->_inludeControllerClass('/var/www/dev_ml...', 'Foo_Wr...')
#2 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(195): Mage_Core_Controller_Varien_Router_Standard->_validateControllerClassName('foo_Wr...', 'index')
#3 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Front.php(158): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#4 /var/www/dev/app/Mage.php(459): Mage_Core_Controller_Varien_Front->dispatch()
#5 /var/www/dev/index.php(65): Mage::run()
#6 {main}
Run Code Online (Sandbox Code Playgroud)

magento

17
推荐指数
3
解决办法
2万
查看次数

如何使用GDI将方形位图渲染为任意四边形多边形?

我需要绘制一个正方形图像,映射或转换为未知的编译时四边形多边形.我怎样才能做到这一点?

更长的解释

具体问题是渲染具有非矩形地图投影的地图图块.假设我有以下磁贴:

方形瓷砖

我知道需要有四个角点:

四个扭曲的角落

鉴于此,我想得到以下输出:

扭曲的图像映射多边形

方形瓷砖可能是:

  • 旋转; 和/或
  • 一端比另一端窄.

认为第二项意味着这需要非仿射变换.

随机附加说明

四面?完全正确的情况是合理的,瓷砖应该映射到具有四个以上点的多边形,但是对于我们的目的和绘制的尺度,方形 - >其他四角多边形变换应该足够了.

为什么只有GDI? 到目前为止,所有渲染都是使用GDI完成的,我希望快速保持代码(a),并且(b)需要尽可能少的额外库.我知道有一些对GDI转换的支持,并且今天一直在试验它们,但即使在试验它们之后,我也不确定它们是否足够灵活用于此目的.如果他们是,我还没有设法弄清楚,所以我真的很感激一些示例代码.

GDI +也可以,因为我们在其他地方使用它,但我知道它可能很慢,速度在这里很重要.

另一种选择是Delphi - / C++ Builder特有的; 这个程序主要是用C++编写的,使用的是VCL,所讨论的图形目前被绘制成TCanvas,混合使用TCanvas方法和原始WinAPI/GDI调用.

叠加图像:最后一点需要注意的是,图块中的一种颜色可能是用于颜色键的透明度:也就是说,上面图块中的所有白色(说)方块在绘制在下面的任何内容时应该是透明的.目前,使用TransparentBlt将切片绘制到方形或轴对齐的矩形目标.

对于让这个问题比"我应该使用什么算法?"更复杂的所有额外警告我感到抱歉.但我也很乐意接受只有算法信息的答案.

delphi graphics gdi+ gdi transform

15
推荐指数
3
解决办法
2136
查看次数

主播:= [akCenter]?

如何将控件置于其父级中心?如何在父母调整大小时保持中心?

我知道我可以编写一个Parent.OnResize事件处理程序来手动移动控件,但并非所有容器组件都有一个OnResize事件,我想自动执行此操作.

akCenter锚吗?

delphi anchor alignment centering

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

即使在Items.clear之后,TPopupMenu仍保留最大宽度

如何重置PopupMenu项目列表的最大宽度?

比如你在运行时向popupmenu添加一些TMenuItems:

item1: [xxxxxxxxxxxxxxxxxxx]
item2: [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
Run Code Online (Sandbox Code Playgroud)

菜单会自动调整大小以适合最大的项目.但是然后你做Items.Clear并添加一个新项目:

item1: [xxxxxxxxxxxx                    ]
Run Code Online (Sandbox Code Playgroud)

最终结果如此,标题后面有一个很大的空白区域.

除了重新创建popupmenu之外还有其他解决方法吗?

这里是重现这种异常的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  t: TMenuItem;
begin
  t := TMenuItem.Create(PopupMenu1);
  t.Caption := 'largelargelargelargelargelarge';
  PopupMenu1.Items.Add(t);
  PopupMenu1.Popup(200, 200);
end;

procedure TForm1.Button2Click(Sender: TObject);
var 
  t: TMenuItem;
begin
  PopupMenu1.Items.Clear;
  t := TMenuItem.Create(PopupMenu1);
  t.Caption := 'short';
  PopupMenu1.Items.Add(t);
  PopupMenu1.Popup(200, 200);
end;
Run Code Online (Sandbox Code Playgroud)

delphi popupmenu menuitem delphi-xe7

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

Thread.FreeOnTerminate:= True,内存泄漏和ghost运行

几年前,我决定永远不要仅仅依赖于将线程的FreeOnTerminate属性设置为true以确保其被破坏,因为我在应用程序终止时发现并推理了两件事:

  1. 它会产生内存泄漏,并且
  2. 程序终止后,线程仍然在笔记本键盘下方的某处运行.

我熟悉了一个解决方法,并没有一直困扰我.直到今晚,再次有人(在这种情况下为@MartinJames)评论我的回答,其中我引用了一些不FreeOnTerminate与线程提前终止结合使用的代码.我回到RTL代码中,意识到我可能做出了错误的假设.但我也不太确定,因此这个问题.

首先,为了重现上述陈述,使用了这个说明性代码:

unit Unit3;

interface

uses
  Classes, Windows, Messages, Forms;

type
  TMyThread = class(TThread)
    FForm: TForm;
    procedure Progress;
    procedure Execute; override;
  end;

  TMainForm = class(TForm)
    procedure FormClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FThread: TMyThread;
  end;

implementation

{$R *.dfm}

{ TMyThread }

procedure TMyThread.Execute;
begin
  while not Terminated do
  begin
    Synchronize(Progress);
    Sleep(2000);
  end;
end;

procedure TMyThread.Progress;
begin
  FForm.Caption := FForm.Caption + '.';
end;

{ TMainForm }

procedure TMainForm.FormClick(Sender: TObject);
begin
  FThread := …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading memory-leaks delphi-7

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

ShortCut什么时候开火?

昨天我发现了一个键盘ShortCut在我期待它时没有发射的情况.

具体情况是:我在MDI子项上按下了ShortCut键组合以获取ActionList的Action,同时聚焦了MDI表单上的侧栏.

我一直认为ShortCuts可以在全球范围内运作.在哪种情况下,他们不会开火?

delphi vcl keyboard-shortcuts

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