хм..может в силу вашей необходимости вы делаете так...но зачем помещать в PageControl форму? по сути каждая страница это вам отдельная форма...вы как бы едите на велосипеде задом на перед...чет не пойму я такой ход
» Вопросы по Delphi (до версии 2009) - часть 5
Доброго времени суток!
Не могу в Edit вводить нецелые числа. Из этого Edit'a с помощью strtofloat работаю с числами, но только с целыми, а надо чтобы еще и нецелые. При вводе нецелых ругается Incompatible types: 'Integer' and 'Extended'
Подскажите пожалуйста. Заранее спасибо!
Не могу в Edit вводить нецелые числа. Из этого Edit'a с помощью strtofloat работаю с числами, но только с целыми, а надо чтобы еще и нецелые. При вводе нецелых ругается Incompatible types: 'Integer' and 'Extended'
Подскажите пожалуйста. Заранее спасибо!
GoodRobin
возможно стоит галка NumbersOnly? уберите ее и вводите числа как строку
возможно стоит галка NumbersOnly? уберите ее и вводите числа как строку
mdid
Разобрался
Надо было убрать запрет на ввод "." и ","
Разобрался
Надо было убрать запрет на ввод "." и ","
Есть четыре панели, они расположены рядом друг с друг, вот таким образом:
Скриншот _1
http://pic.ipicture.ru/uploads/090827/GpBcSsW3V6.jpg
При развороте окна на весь экран эти панели съезжают,
для верхней левой панели в параметрах Anchors, свойство Left установил в True.
Для правой верхней панели свойство Right сделал в True.
Для нижних панелей я таже сделал выравнивание по левому и правому краю.
Теперь у меня панели расходятся по разным углам:
Скриншот_2
http://pic.ipicture.ru/uploads/090827/RnRXz2Hk61.jpg
Как мне сделать так чтобы панели когда окно разворачивалось на весь экран,
не только по левому и правому краю было выравнивание но и по центру, то есть чтобы расширялись и в окне было бы 4 панели плотно прикреплены друг к другу, в общем приняли бы такой же вид как при свернутом окне, на первом скриншоте?
Исходник моего творенья
Ссылка
Скриншот _1
http://pic.ipicture.ru/uploads/090827/GpBcSsW3V6.jpg
При развороте окна на весь экран эти панели съезжают,
для верхней левой панели в параметрах Anchors, свойство Left установил в True.
Для правой верхней панели свойство Right сделал в True.
Для нижних панелей я таже сделал выравнивание по левому и правому краю.
Теперь у меня панели расходятся по разным углам:
Скриншот_2
http://pic.ipicture.ru/uploads/090827/RnRXz2Hk61.jpg
Как мне сделать так чтобы панели когда окно разворачивалось на весь экран,
не только по левому и правому краю было выравнивание но и по центру, то есть чтобы расширялись и в окне было бы 4 панели плотно прикреплены друг к другу, в общем приняли бы такой же вид как при свернутом окне, на первом скриншоте?
Исходник моего творенья
Ссылка
mauar
Примерно так: [more]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
procedure PanelSize;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.PanelSize;
begin
Panel1.SetBounds(0,0,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel2.SetBounds(Panel1.Width,0,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel3.SetBounds(0,Panel1.Height,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel4.SetBounds(Panel3.Width,Panel2.Height,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PanelSize;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
PanelSize;
end;
end.
[/more]
Примерно так: [more]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
procedure PanelSize;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.PanelSize;
begin
Panel1.SetBounds(0,0,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel2.SetBounds(Panel1.Width,0,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel3.SetBounds(0,Panel1.Height,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
Panel4.SetBounds(Panel3.Width,Panel2.Height,Form1.ClientWidth div 2,Form1.ClientHeight div 2);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PanelSize;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
PanelSize;
end;
end.
[/more]
GoodRobin
Цитата:
Я обычно делаю, что нибудь в этом роде
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0','1','2','3','4','5','6','7','8','9',',','.'])
then Key := #0;
end;
Цитата:
Не могу в Edit вводить нецелые числа. Из этого Edit'a с помощью strtofloat работаю с числами, но только с целыми, а надо чтобы еще и нецелые. При вводе нецелых ругается Incompatible types: 'Integer' and 'Extended'
Я обычно делаю, что нибудь в этом роде
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0','1','2','3','4','5','6','7','8','9',',','.'])
then Key := #0;
end;
mauar
В старших версиях дельфей есть FlowPanel и GridPanel, попробуйте их.
В старших версиях дельфей есть FlowPanel и GridPanel, попробуйте их.
На днях прочитал, что Делфи Будет поддерживать WinFX, это реальность????
VandB
Какой еще WinFX, и где вы это прочитали?
Какой еще WinFX, и где вы это прочитали?
Frodo_Torbins
Мда...... WinFX. На 1 форуме посвешенному программированию, и на оф сайте чтото было подобное. Визуал студио уже потдерживает WinFX.
Мда...... WinFX. На 1 форуме посвешенному программированию, и на оф сайте чтото было подобное. Визуал студио уже потдерживает WinFX.
VandB
А я уж думал майкрософт опять что то придумал. А это всего лишь старое название .NET Framework 3.0. Так вот, .NET Framework 3.x уже давно и успешно поддерживается в Delphi Prism.
А я уж думал майкрософт опять что то придумал. А это всего лишь старое название .NET Framework 3.0. Так вот, .NET Framework 3.x уже давно и успешно поддерживается в Delphi Prism.
Frodo_Torbins
Ну не совсем так и старое....
Ну не совсем так и старое....
ну обычный .Net Framework и в чем прикол не пойму ... просто новые понты Мелкомягких ...
Создаю несколько объектов в рантайме, один из них кнопка "удалить". По нажатию, на которую удаляются созданные обекты и сама кнопка. Как правильно удалить из события onClick саму кнопку "удалить", которая вызвала обработчик? Остальные объекты удаляются нормально, а вот с этой кнопкой - эксепшен вылетает, что логично, но не знаю как правильно. Подскажите, плиз, кому не сложно.
Granmer, попробуй так.
Код:
var
Btn: hWnd;
procedure ButtonClick(Sender: TObject);
begin;
SendMessage(Btn, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
procedure CreateButton;
var
Button: TButton;
begin;
Button := TButton.Create(Self);
Button.Parent := Self;
Button.OnClick := ButtonClick;
Button.Visible := true;
Btn := Button.Handle;
end;
Код:
var
Btn: hWnd;
procedure ButtonClick(Sender: TObject);
begin;
SendMessage(Btn, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
procedure CreateButton;
var
Button: TButton;
begin;
Button := TButton.Create(Self);
Button.Parent := Self;
Button.OnClick := ButtonClick;
Button.Visible := true;
Btn := Button.Handle;
end;
Granmer
Идея с посылкой сообщения показаная выше правильная, но я бы делал иначе. Во-первых использовал PostMessage вместо SendMessage. Во-вторых отправлял бы собственное сообщение форме (WM_USER+n). Ну и в обработчике сообщения всеже удалял бы сам обьект кнопку.
Идея с посылкой сообщения показаная выше правильная, но я бы делал иначе. Во-первых использовал PostMessage вместо SendMessage. Во-вторых отправлял бы собственное сообщение форме (WM_USER+n). Ну и в обработчике сообщения всеже удалял бы сам обьект кнопку.
Мне надо выводить на TImage (на котором уже есть фон Bitmap1) маленькую картинку (Bitmap2). Картинка - красный кружок на белом фоне (25х25 пикс.). Так вот как я не стараюсь, не могу выводить так, чтобы белый фон стал прозрачным и виден был только красный кружок. Пробовал и Transparent свойство Canvas и BrushCopy и Draw. Все хорошо получается когда картинка большая (100 на 100 пикселей), а вот с такой маленькой получается красный кружок в обрамлении белой рамки. То есть, не до конца фон убирается. Подскажите вообще какой механизм вывода на один Bitmap другого Bitmap'a с прозрачным фоном?
Может уже не актуально, но вот способ лучше
Код:
procedure ButtonClick(Sender: TObject);
begin
TButton(Sender).Destroy;
end;
Код:
procedure ButtonClick(Sender: TObject);
begin
TButton(Sender).Destroy;
end;
Bonivur
Код в студию, и пример изображений тоже.
RaB0TNiK
Этот способ потенциально может выдавать AV.
Код в студию, и пример изображений тоже.
RaB0TNiK
Этот способ потенциально может выдавать AV.
Frodo_Torbins
Цитата:
Картинка (B2 загружается из ресурса BUTTON) -
Код :
Код:
var
B1,B2 :TBitmap;
begin
B1 := TBitmap.Create; //не имеет значения. создется в другом месте, простая картинка
//отображается нормально, с ней проблем нет никаких
B2 := TBitmap.Create;
B2.LoadFromResources(HInstance,'BUTTON'); //подгружаем картинку 2
B2.Transparent:=true;
B2.TransparentColor:=B.Canvas.Pixels[1,1];{пробовал другие значения для пикслеей -или еще хуже или то же самое - по краям красного кружка видны черные очертания (цвет фона)}
B1.Canvas.Draw(0,0,B2);
Цитата:
Код в студию, и пример изображений тоже.
Картинка (B2 загружается из ресурса BUTTON) -
Код :
Код:
var
B1,B2 :TBitmap;
begin
B1 := TBitmap.Create; //не имеет значения. создется в другом месте, простая картинка
//отображается нормально, с ней проблем нет никаких
B2 := TBitmap.Create;
B2.LoadFromResources(HInstance,'BUTTON'); //подгружаем картинку 2
B2.Transparent:=true;
B2.TransparentColor:=B.Canvas.Pixels[1,1];{пробовал другие значения для пикслеей -или еще хуже или то же самое - по краям красного кружка видны черные очертания (цвет фона)}
B1.Canvas.Draw(0,0,B2);
Bonivur
Есть предположение что возле самого кружка цвет пикселя отличен от пикселя в (1,1). Попробуй посмотреть в каком нить просмотрщике, с указанием прозрачного пиксель (1,1).У меня нечто подобное было, когда PNG сохранял как BMP.
Есть предположение что возле самого кружка цвет пикселя отличен от пикселя в (1,1). Попробуй посмотреть в каком нить просмотрщике, с указанием прозрачного пиксель (1,1).У меня нечто подобное было, когда PNG сохранял как BMP.
ShIvADeSt
Цитата:
Да, ты прав, убрал нестыковки с цветом, все вроде нормально, но вот только никак не избавиться от зазубрин по краям круглой кнопки (ровная линия никак не выходит при таком масштабе). Не знаю как с этим бороться. При таких малых пикселях выходит "лестница". Можно ли рисовать с уменьшением размера картинки? То есть вставлять bmp больший по размеру так чтобы на первом BMP (фоне) он выглядел бы меньше по размеру. То есть масштабировать не саму исходную картинку, а ее вывод на холст. Короче изменение размера налету как нибудь можно сделать или какой размер у картинки такой в результате и будет?
Цитата:
Есть предположение что возле самого кружка цвет пикселя отличен от пикселя в (1,1). Попробуй посмотреть в каком нить просмотрщике, с указанием прозрачного пиксель (1,1).У меня нечто подобное было, когда PNG сохранял как BMP.
Да, ты прав, убрал нестыковки с цветом, все вроде нормально, но вот только никак не избавиться от зазубрин по краям круглой кнопки (ровная линия никак не выходит при таком масштабе). Не знаю как с этим бороться. При таких малых пикселях выходит "лестница". Можно ли рисовать с уменьшением размера картинки? То есть вставлять bmp больший по размеру так чтобы на первом BMP (фоне) он выглядел бы меньше по размеру. То есть масштабировать не саму исходную картинку, а ее вывод на холст. Короче изменение размера налету как нибудь можно сделать или какой размер у картинки такой в результате и будет?
Bonivur
Конечно можно, но я бы на вашем месте просто использовал PNG или битмап с альфа-каналом.
Конечно можно, но я бы на вашем месте просто использовал PNG или битмап с альфа-каналом.
Frodo_Torbins
Цитата:
1) Как возможно? Какая процедура позволяет изменять размер выводимого bitmap'a? Пробовал StretchDraw, но она как-то искажает рисунок, появляются точки на нем.
2) Разве можно использовать PNG файлы в Дельфи (в частности в ресурсах)? Если не трудно подробнее не эту тему. Где найти исходники примеров такого использования? И что такое битмап с альфаканалом. Не слышал про такой. Я думал альфаканал поддерживают только GIF и PNG. Мне надо чтобы графика загружалась из ресурсов программы.
Цитата:
Конечно можно, но я бы на вашем месте просто использовал PNG или битмап с альфа-каналом.
1) Как возможно? Какая процедура позволяет изменять размер выводимого bitmap'a? Пробовал StretchDraw, но она как-то искажает рисунок, появляются точки на нем.
2) Разве можно использовать PNG файлы в Дельфи (в частности в ресурсах)? Если не трудно подробнее не эту тему. Где найти исходники примеров такого использования? И что такое битмап с альфаканалом. Не слышал про такой. Я думал альфаканал поддерживают только GIF и PNG. Мне надо чтобы графика загружалась из ресурсов программы.
Цитата:
StretchDraw, но она как-то искажает рисунок, появляются точки на нем.Именно поэтому я и предложил PNG.
Цитата:
Разве можно использовать PNG файлы в Дельфи (в частности в ресурсах)?В ресурсы вообще можно запихнуть все что угодно. А для работы с PNG можно использовать например TPNGImage.
Цитата:
И что такое битмап с альфаканалом.Это битмап с 32 битами на пиксель. Причем в четвертом байте должны лежать значения альфаканала. Вот моя попытка работы с такими изображениями: http://delphikingdom.com/asp/answer.asp?IDAnswer=63111 А вот функция от майкрософта: AlphaBlend.
Bonivur
А если нужна более "продвинутая" работа с изображениями, то известная библиотека Graphics32. Тут и слои как в Photoshop, и несколько алгоритмов сглаживания, трансформации и куча других возможностей. Очень быстрая.
В общем это отдельная большая тема.
А если нужна более "продвинутая" работа с изображениями, то известная библиотека Graphics32. Тут и слои как в Photoshop, и несколько алгоритмов сглаживания, трансформации и куча других возможностей. Очень быстрая.
В общем это отдельная большая тема.
Frodo_Torbins
Пишу код как указано сдесь...
Код:
//в файле ресурсов добавляем строку
PNG RCDATA "PNG.png"
//в файле ресурсов добавляем строку
interface
uses
..., PNGImage;
var
ImagePNG: TImage;
implementation
{$R *.dfm}
{$R myres.res}
procedure LoadPNGFromRes;
var
MyPNG: TPNGObject;
ResStream: TResourceStream;
begin
MyPNG:=TPNGObject.Create;
ResStream:=TResourceStream.Create(H Instance,'PNG',RT_RCDATA);
try
MyPNG.LoadFromStream(ResStream);
ImagePNG.Picture.Assign(MyPNG);
finally
MyPNG.Free;
ResStream.Free;
end;
end;
Но при попытке рисовать на Bitmape (
Bitmap.Canvas.Draw(10,10,MyImage.Picture.Graphics) )
выдает ошибку.
Пишу код как указано сдесь...
Код:
//в файле ресурсов добавляем строку
PNG RCDATA "PNG.png"
//в файле ресурсов добавляем строку
interface
uses
..., PNGImage;
var
ImagePNG: TImage;
implementation
{$R *.dfm}
{$R myres.res}
procedure LoadPNGFromRes;
var
MyPNG: TPNGObject;
ResStream: TResourceStream;
begin
MyPNG:=TPNGObject.Create;
ResStream:=TResourceStream.Create(H Instance,'PNG',RT_RCDATA);
try
MyPNG.LoadFromStream(ResStream);
ImagePNG.Picture.Assign(MyPNG);
finally
MyPNG.Free;
ResStream.Free;
end;
end;
Но при попытке рисовать на Bitmape (
Bitmap.Canvas.Draw(10,10,MyImage.Picture.Graphics) )
выдает ошибку.
Bonivur
А какую ошибку?
Можно еще попробовать так: Bitmap.Canvas.Draw(10,10,MyPNG), только тогда переменная MyPNG должна быть глобальной, а ImagePNG можно будет убрать.
А какую ошибку?
Можно еще попробовать так: Bitmap.Canvas.Draw(10,10,MyPNG), только тогда переменная MyPNG должна быть глобальной, а ImagePNG можно будет убрать.
Frodo_Torbins
вот код, который работает (для модуля PNGImage)
Код:
PNG RCDATA "PNG.png"
//в файле ресурсов добавляем строку
interface
uses
..., PNGImage;
implementation
{$R *.dfm}
{$R myres.res}
procedure LoadPNGFromRes;
var
MyPNG: TPNGObject;
ResStream: TResourceStream;
begin
MyPNG:=TPNGObject.Create;
ResStream:=TResourceStream.Create(HInstance,'PNG',RT_RCDATA);
try
MyPNG.LoadFromStream(ResStream);
Bitmap.Canvas.Draw(10,10,MyPNG);
finally
MyPNG.Free;
ResStream.Free;
end;
end;
вот код, который работает (для модуля PNGImage)
Код:
PNG RCDATA "PNG.png"
//в файле ресурсов добавляем строку
interface
uses
..., PNGImage;
implementation
{$R *.dfm}
{$R myres.res}
procedure LoadPNGFromRes;
var
MyPNG: TPNGObject;
ResStream: TResourceStream;
begin
MyPNG:=TPNGObject.Create;
ResStream:=TResourceStream.Create(HInstance,'PNG',RT_RCDATA);
try
MyPNG.LoadFromStream(ResStream);
Bitmap.Canvas.Draw(10,10,MyPNG);
finally
MyPNG.Free;
ResStream.Free;
end;
end;
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
Предыдущая тема: Clipper 5
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.