Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
12th
Окт
О сайте нашего Журнала [ПРОграммист] …
Осмелюсь завести отдельную тему о жизни сайта нашего с Вами журнала [ПРОграммист].
11th
Окт
Рисование многоугольника мышкой
Доброго дня!
Вот всё пытаюсь сделать рисование многоугольника мышкой. Моя логика такая:
static int n=0;
POINT pt[10];
1. Нажатием левой клавиши запоминаю первую точку
case WM_LBUTTONDOWN:
x=LOWORD(lParam); //coordinates 1
y=HIWORD(lParam);
break;
2. Отжатием – запоминаю вторую и последующие
case WM_LBUTTONUP:
hdc=GetDC(hWnd);
x2=LOWORD(lParam); //coordinates 2
y2=HIWORD(lParam);
SelectObject(hdc, hPen);
SelectObject(hdc1, hPen);
if (n==0) {pt[0].x=x; pt[0].y=y;}
n++;
pt[n].x=x2;
pt[n].y=y2;
ReleaseDC (hWnd,hdc);
break;
3. Нажатием правой клавиши рисую получившуюся фигуру:
case WM_RBUTTONDOWN:
hdc=GetDC(hWnd);
SelectObject(hdc, hPen);
SelectObject(hdc1, hPen);
Polygon(hdc,pt,n);
Polygon(hdc1,pt,n);
n=0;
ReleaseDC (hWnd,hdc);
break;
Но не работает. Что я делаю не так?
ТС сам нашел решение:
case WM_LBUTTONDOWN:
x=LOWORD(lParam); //coordinates 1
y=HIWORD(lParam);
if (n==0) {
x0=x;
y0=y;
}
break;
case WM_LBUTTONUP:
hdc=GetDC(hWnd);
x2=LOWORD(lParam); //coordinates 2
y2=HIWORD(lParam);
SelectObject(hdc, hPen);
SelectObject(hdc1, hPen);
//choise++;
//if (choise==6) {choise=1;}
choise=5;
switch (choise) {
case 1:
Rectangle (hdc,x,y, x2,y2);
Rectangle (hdc1,x,y, x2,y2);
break;
case 2:
Ellipse (hdc,x,y, x2,y2);
Ellipse (hdc1,x,y, x2,y2);
break;
case 3:
MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
break;
case 4:
case 5:
if (n==0)
{
pt[0].x=x;
pt[0].y=y;
pt[1].x=x2;
pt[1].y=y2;
n=1;
MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
}
else
{
MoveToEx(hdc,x0,y0,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x0,y0,0);
LineTo (hdc1,x2,y2);
pt[n].x=x2;
pt[n].y=y2;
}
n++;
x0=x2; y0=y2; //захоўваем пачатак наступнага адрэзка
break;
}
ReleaseDC (hWnd,hdc);
break;
case WM_RBUTTONDOWN:
hdc=GetDC(hWnd);
SelectObject(hdc, hPen2);
SelectObject(hdc1, hPen2);
if (choise==4) {
Polygon(hdc,pt,n);
Polygon(hdc1,pt,n);
}
if (choise==5) {
Polyline(hdc,pt,n);
Polyline(hdc1,pt,n);
}
ReleaseDC (hWnd,hdc);
break;
8th
Окт
Рассылка. Выпуск 79
От ведущего.
Здравствуйте, уважаемые читатели рассылки. Подошел к концу первый месяц осени, не знаю как для вас, а для меня он пролетел незаметно. Общение на нашем форуме не прекращается ни на минуту, чему пример сегодняшний выпуск рассылки. Читайте в этом номере обзор новых тем форума за неделю.
7th
Окт
Javascript который рисует таблицу безопасных цветов
В таблицы могут быть использованы только цвета со значениями 0, 51, 102, 153, 204, 255 в каждой из позиции кода цвета RGB, т.е. R может быть 0, 51, 102, 153, 204, 255; G – 0, 51, 102, 153, 204, 255; B – 0, 51, 102, 153, 204, 255.
Итого 216 вариантов. Делаете цикл, перебираете все возможные цвета и выводите их как ячейки таблицы.
<head>
<title>Таблица безопасных цветов</title>
<script>
function getTrueTable(contID)
{
var r = 0;
var g = 0;
var b = 0;
var table = “<table width=’100%’>”;
while (r <= 255)
{
g = 0;
while (g <= 255)
{
table += “<tr>”;
b = 0;
while (b <= 255)
{
table += “<td style=’width:88px; height:31px; background-color: rgb(”+r+“,”+g+“,”+b+“);color: rgb(”+(255-r)+“,”+(255-g)+“,”+(255-b)+“)’>RGB(”+r+“,”+g+“,”+b+“)
</td>”;
b += 51;
}
table += “</tr>”;
g += 51;
}
r += 51;
}
table += “</table>”;
document.getElementById(contID).innerHTML = table;
}
</script>
</head>
<body id=“truetable”>
<input type=“button” onclick=“getTrueTable(’truetable’);” value=“Хочешь таблицу правильных цветов? Тыч суда!”>
</body>
</html>
6th
Окт
Как скопировать файлы?
Есть Listq : TStringList; где находится список файлов в виде
‘D:\Program Files\Acro\Writer\README.HTM’
и необходимо эти файлы скопировать в другой каталог. Подскажите как такое возможно осуществить? При этом необходимо автоматически переименовывать имена одинаковых файлов.
var F : TShFileOpStruct;i:integer;
begin
F.Wnd := 0;
F.wFunc := FO_COPY;
for i:=0 to Listq.count-1 do
FromFile:=FromFile+Listq[i]+#0;
FromFile:=FromFile+#0#0;
F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0;
F.pTo:=pchar(ToDir);
F.fFlags := FOF_RENAMEONCOLLISION;
result:=ShFileOperation(F) = 0;
end;
6th
Как расчитать время между нажатием и отпусканием кнопки мыши?
procedure TForm1.RzBitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
time1 := Time;
end;
procedure TForm1.RzBitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var h, m, s, ms: Word;
st: string;
d: Double;
begin
time2 := Time;
time3 := time2 – time1;
DecodeTime(time3, h, m, s, ms);
st := IntToStr(s) + ‘.’ + IntToStr(ms);
d := RoundTo(StrToFloat(st), -1);
label1.Caption := FloatToStr(d);
end;
5th
Окт
Как получить классы всех дочерних окон формы?
var s:string;
begin
SetLength(s,256);
SetLength(s,GetClassName(HWND,s[1],256));
Form1.Memo1.Lines.Add(s);
Result:=true;
end;
на кнопке пишем
EnumChildWindows(<хендл окна, у которого перечисляем>,@EnumClasses,0);
4th
Окт
Изменение курсора
Пишите процедуру типа
begin
Screen.Cursors[p] := LoadCursor(HInstance,s);
Image1.Cursor:=TCursor(p);
end;
Вместо Image1 Ваш элемент,для кот. должен появляться Ваш курсор.
Пример использования:
‘oval’ – имя курсора из файла *.res.
В коде формы подключите Ваш res-файл,например, {$R MyFile.RES}
Файл с ресурсами создаёте заранее,например в Image Editor (стандартный Борландовский: Меню Tool->Image Editor) – он будет содержать Ваши курсоры.
Если что-то не получится во вложении пример программы и скриншот. Писал 1,5-2 года назад,как курсовую. Тогда ещё много чего не знал(да и сейчас не всё знаю:),так что код очень корявый,но рабочий. Перед запуском программы скопируйте папку “КРАБ” на диск С.
КР(NEW)!!!.zip
3rd
Окт
Gecko. Как его использовать в дельфи?
Установка, полезные ссылки, различные решения проблем. Читать тему на форуме
3rd
Организация цикла While в ассемблере
Можно макроинструкциями:
invoke GetMessage,ADDR msg,0,0,0
.BREAK .IF (!eax)
invoke TranslateMessage,ADDR msg
invoke DispatchMessage,ADDR msg
.ENDW
Это пример из МАСМ.
Облако меток
css реестр ассемблер timer SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid canvas поиск файл Pascal форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)