Вопросы раздела Delphi
Не как ни пойма чем они отличаются
Думаю вопрос ясен, мне нужно чтоб нельзя было писать и стирать в RichEdit. Спасибо)
Написание программы/скрипта
Услуга по написанию любой простой программы/скрипта на
C/C++/Pascal/PHP/Java/JavaScript (до 30 строк кода).
От Вас требуется внятное задание что нужно сделать и язык программирования.
Желательно по подробней, т.к я не ас по делфи))) Буду очень признателен если поможети!))
Консультация по разработке
Часовая консультация по вопросам разработки или доработки сайта, нового IT-проекта или по вопросам разработки программного обеспечения.
Сообщите по какой теме Вам требуется консультация, чтобы эксперт мог (при необходимости) провести предварительную подготовку.
У меня 2 вопроса: 1)У меня например есть определенная папка с картинками и мне нужно чтобы при нажатие на кнопку открывалась картинка и я мог переключать между ними посредствои действий Вперед и Назад. Так вот как такое реализовать?! 2) Как сделать тоже самое только на клавиши клавиатуры.
Желательно с кодом т.к в делфи занялся совсем недавно. Спасибо))
Найти все двузначные числа, сумма квадратов цифр которых делится на 17 delphi 7 ( на компонентах spinedit1 edit1 bitbtn)....
пожалуйста поподробностей обьяснить....
Желательно подробнее, так как я делфи не особо знаю
Как сделать определенный компонент в делфи не активным, например label, а уже при нажатии кнопки label вновь стал активным и смог выполнять свои действия?
Действие должно быть такое: например пользователь щёлкает на записи в таб.1, а данные этой записи отображаются в табл.2
вычислить значение выражения по формуле e^x-x-2+(1+x)^2.В делфи, все переменные принимают действительные значения
197. Разложить число на простые множители.как решить в лазарусе
Здравствуйте, начал делать браузер в делфи и возникла проблема, как создать вкладки с помощью компонента PageControl. Желательно как можно подробней, так как не очень хорошо разбираюсь в делфи.
Добрый вечер. Очень нужна программа на делфи “шифрование RC2 с созданием ЭЦП по алгоритму DSA” для текстового сообщения. Т е программа должна подписывать сообщение, верифицировать подпись, шифровать и расшифровывать сообщение. Обязательно в Delphi, а то мне будет сложно разобраться в коде. Времени мало у меня осталось, помогите, пожалуйста. Пойдет любая часть задания даже, пусть только шифрование или создание sha1(хэширование). У
Label lb1;
var i,a,b:integer;
key:char;
begin
ShowMessage('Privet parthner!'+#13+'Я рад, что вы состязаетесь со мной!'
+#13+#13+'Отгадайте мое любимое число!'+#13+'Для справки: оно меньше тысячи.');
lb1: Randomize;
b:=Random(1000);
i:=0;
a:=Round(StrToFloat(InputBox('Ввод числа','Введите число','')));
Repeat
if a<b then a:=Round(StrToInt(InputBox('Ввод числа','Больше','')));
if a>b then a:=Round(StrToInt(InputBox('Ввод числа','Меньше','')));
i:=i+1;
if not (key in ['A'..'Z']) then begin ShowMessage('Только цифры!');
end;
until a=b;
case i of
1..9:ShowMessage('Это случайность!');
10:ShowMessage('Чудесно!');
11,12:ShowMessage('Очень хорошо!');
13,14:ShowMessage('Посредственно!');
else ShowMessage('Удачно!');
end;
If MessageDlg('Сыграем еще?',mtInformation,[mbYes,mbNO],0)=mrYes
then goto lb1;
ShowMessage('Пока.');
end;
end.
Необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с шагом h=(xk-xn)/n. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
Задание приложила, вариант 12 и 14
У меня есть плейр, и оболочка, и внем при нажатие например на кнопку открывается видео, так вот какой код нужен чтоб при нажатие на кнопку видео открывалось на весь экран? Видео воспроизводится на панеле.
DSPack. расскажите о установке компонента DSPack. в обычной инструкции по установке сказано "___ 1) Итак, распаковываем скаченный архив, заходим в папочку packages и копируем все от туда в: «папка куда установлена delphi\lib» и в projects\bpl. ___" я понятия не имею где эта папка -> "__«папка куда установлена delphi\lib» и в projects\bpl. "__" помогите пожалуйста вот если что вся интрукцыя котороя
Мне нужно чтобы при воспроизведении видео в MediaPlayer, trackbar двигался паралельно с видео. Немогу ни как связать. Если есть другие варианты, то можно и другие, лишь бы работало. Заранее спасибо.
Здравствуйте.
У меня такой вопрос: как использовать формулу для вычисления, введенную в TEdit?
Например я ввожу в поле Edit 'sin(x)' в другой Edit значение X и мне соответственно нужно программно извлечь формулу из edit'а, либо посчитать значение в нём… Подскажите как это реализовать?
Заранее благодарен
Дан динамический массив символов. Вставить после каждого символа символ ‘/’.
(Просьба, обязательные компоненты edit1 (введите эл массива), StringGrid1 StringGrid2, BitBtn1(Вывод исходного массива) BitBtn2(вывод результата) )
вот пример:
Дан динамический массив целых чисел. Вставить после каждого элемента массива нулевой элемент.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Buttons;
type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
StringGrid1: TStringGrid;
StringGrid2:
Memo1: TMemo;
BitBtn3: TBitBtn;
procedure Edit1KeyPress(Sender: TObject; var Key:Char);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
var
a:array of integer;
procedure TForm2.FormCreate(Sender: TObject);
begin
setlength(a,0);
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
setlength(a,length(a)+1);
a[length(a)-1]:=strtoint(edit1.text);
edit1.text:='';
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var
i:integer;
begin
stringgrid1.ColCount:=length(a);
for i:=0 to length(a) do
stringgrid1.Cells[i,0]:=inttostr(a[i]);
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
var
n,i,k:integer;
begin
n:=length(a)-1;
setlength(a,length(a)+length(a)-1);
k:=length(a)-1;
for i:=n downto 1 do
begin
a[k]:=a[i];
a[i]:=0;
k:=k-2;
end;
stringgrid2.ColCount:=length(a);
for i:=0 to length(a)-1 do
stringgrid2.cells[i,0]:=inttostr(a[i]);
end;
end.
Создаю VCL приложение, в котором с помощью REST компонентов намереваюсь получить доступ к Dropbox
Успешно создал api-приложение на сайте разработчиков Dropbox, на форме моей программы авторизируюсь и получаю access_token.
Дальше пытаюсь скачать файл, но не получается правильно составить запрос
Вот моя попытка
В документации сказано запрос составлять так
https://www.dropbox.com/developers/documentation/http/documentation#files-download
При попытке выполнить срабатывает исключение «400 Bad Request»
В чем ошибка?
Здравствуйте, у меня такой вопрос, я хочу сделать приложение про отличия в картинках, и чтоб к примеру при нахождении отличия и при нажатии, выводилось сообщение что 1 отличе найдено. Прошу кто чем поможет
У меня вопрос по работе с сетью в Delphi
С помощью REST library (с которой знаком поверхностно) подключаюсь к google drive api
в OAuth2Authenticator-е успешно получил Access и Refresh token-ы
пытаюсь обновить AccesToken так, как на фото
получаю исключение
ETHTTPProtocolException with message 'HTTP/1.1 404 not found'
Видимо неправильно составил запрос
Но параметры добавлял все те, которые указаны в документации google
https://developers.google.com/identity/protocols/OAuth2WebServer
(Пункт Refreshing an access token (offline access))
Как правильно составить запрос?
Дана задача
На форме находятся 3 обьекта: edit1,edit2 и button1.
Нужно, чтобы после ввода строки в edit1 и клике на кнопку button1, в edit2 появлялась эта же строка, только перевернутая
Добрый день! Вопрос такой, у меня есть хостинг и статический IP адрес и мне нужно создать такую систему как удаленное упрвление, к примеру один комп дома а второй на работе и сидя дома я должен управлять программой которая на работе, естественно оба компа должны быть привязаны к одному хосту, теперь у меня несколько вариантов вопроса.
1. возможно ли передавать и принимать
2. если обязательно требуется программа на хостинге то как реализовать эту систему?
Вообщем нужно сделать так чтобы 2 или несколько компьютеров общались друг сдругом по командам, а еще хостинг у меня на Linux-е. Заране благодарен.
Добрый вечер. Я решил сделать игрушку на подобие героев меча и магии 3 с 2д графикой, но со своей спецификой. Подскажите как правильно организовать саму пошаговую битву? Я сам пытался создавать алгоритмы, но они иногда неправильно работают и к тому же требуют хранения большого количества информации. Я придумал массив отрядов игроков. В каждом отряде 11 ячеек с информацией о расположенных
Как при чтении из файла в двумерный массив пропускать значения? массив предварительно инициализируется, первая часть содержить номера элементов, а вторая получается из загружаемых значений из текстового файла.
unit MainSklad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzStatus, ExtCtrls, RzPanel, RzButton, ComCtrls, RzTreeVw,
RzPrgres, StdCtrls, Mask, RzEdit, RzDBEdit, Grids, DBGrids, RzLabel,
RzTabs, TFlatHintUnit, ImgList, RzGroupBar, RzCmboBx, RzRadChk, RzDBChk,
Menus, DBCtrls, RzDBNav;
type
TfmMainSklad = class(TForm)
RzGroupBar: TRzGroupBar;
RzGroupZayavki: TRzGroup;
RzGroupCreate: TRzGroup;
FlatHint: TFlatHint;
RzPageControl: TRzPageControl;
tsZayavka: TRzTabSheet;
tsZayavkiSnab: TRzTabSheet;
DBGridZayavki: TDBGrid;
tsTovars: TRzTabSheet;
RzLaProgress: TRzLabel;
RzProgressBar: TRzProgressBar;
RzTreeViewTovars: TRzTreeView;
RzBBRefresh: TRzBitBtn;
tsEmpty: TRzTabSheet;
ImageList1: TImageList;
RzCBOtdelNumber: TRzComboBox;
RzLabel13: TRzLabel;
RzBBAddGroup: TRzBitBtn;
RzBBAddTovar: TRzBitBtn;
RzEdFindTovar: TRzEdit;
RzBitBtnFind: TRzBitBtn;
RzLabel16: TRzLabel;
RzLabel17: TRzLabel;
RzLabel18: TRzLabel;
RzEdPrice: TRzEdit;
RzLabel14: TRzLabel;
RzEdCountTovar: TRzEdit;
RzEdCountry: TRzEdit;
RzEdEdIzm: TRzEdit;
RzStatusBar1: TRzStatusBar;
RzClockStatus: TRzClockStatus;
RzStatusDB: TRzStatusPane;
RzLaInfo: TRzLabel;
RzGroup3: TRzGroup;
RzBBDeleteTovar: TRzBitBtn;
RzPanel1: TRzPanel;
RzLabel1: TRzLabel;
RzDBEdit1: TRzDBEdit;
RzDBCheckBox1: TRzDBCheckBox;
RzLabel7: TRzLabel;
RzDBEdit7: TRzDBEdit;
RzDBCheckBox7: TRzDBCheckBox;
RzDBCheckBox8: TRzDBCheckBox;
RzDBEdit8: TRzDBEdit;
RzLabel8: TRzLabel;
RzDBCheckBox2: TRzDBCheckBox;
RzDBEdit2: TRzDBEdit;
RzLabel2: TRzLabel;
RzLabel3: TRzLabel;
RzDBEdit3: TRzDBEdit;
RzDBCheckBox3: TRzDBCheckBox;
RzLabel9: TRzLabel;
RzDBEdit9: TRzDBEdit;
RzDBCheckBox9: TRzDBCheckBox;
RzDBCheckBox10: TRzDBCheckBox;
RzDBEdit10: TRzDBEdit;
RzLabel10: TRzLabel;
RzDBCheckBox4: TRzDBCheckBox;
RzDBEdit4: TRzDBEdit;
RzLabel4: TRzLabel;
RzLabel5: TRzLabel;
RzDBEdit5: TRzDBEdit;
RzDBCheckBox5: TRzDBCheckBox;
RzLabel11: TRzLabel;
RzDBEdit11: TRzDBEdit;
RzDBCheckBox11: TRzDBCheckBox;
RzDBCheckBox12: TRzDBCheckBox;
RzDBEdit12: TRzDBEdit;
RzLabel12: TRzLabel;
RzDBCheckBox6: TRzDBCheckBox;
RzDBEdit6: TRzDBEdit;
RzLabel6: TRzLabel;
RzBBExpand: TRzBitBtn;
RzBBCollapse: TRzBitBtn;
DBGridZayavkiSnab: TDBGrid;
RzPanel2: TRzPanel;
RzLabel15: TRzLabel;
RzLabel19: TRzLabel;
RzLabel20: TRzLabel;
RzLabel21: TRzLabel;
RzLabel22: TRzLabel;
RzLabel23: TRzLabel;
RzLabel24: TRzLabel;
RzLabel25: TRzLabel;
RzLabel26: TRzLabel;
RzLabel27: TRzLabel;
RzLabel28: TRzLabel;
RzLabel29: TRzLabel;
RzDBEdit13: TRzDBEdit;
RzDBCheckBox13: TRzDBCheckBox;
RzDBEdit14: TRzDBEdit;
RzDBCheckBox14: TRzDBCheckBox;
RzDBCheckBox15: TRzDBCheckBox;
RzDBEdit15: TRzDBEdit;
RzDBCheckBox16: TRzDBCheckBox;
RzDBEdit16: TRzDBEdit;
RzDBEdit17: TRzDBEdit;
RzDBCheckBox17: TRzDBCheckBox;
RzDBEdit18: TRzDBEdit;
RzDBCheckBox18: TRzDBCheckBox;
RzDBCheckBox19: TRzDBCheckBox;
RzDBEdit19: TRzDBEdit;
RzDBCheckBox20: TRzDBCheckBox;
RzDBEdit20: TRzDBEdit;
RzDBEdit21: TRzDBEdit;
RzDBCheckBox21: TRzDBCheckBox;
RzDBEdit22: TRzDBEdit;
RzDBCheckBox22: TRzDBCheckBox;
RzDBCheckBox23: TRzDBCheckBox;
RzDBEdit23: TRzDBEdit;
RzDBCheckBox24: TRzDBCheckBox;
RzDBEdit24: TRzDBEdit;
RzDBNavigator1: TRzDBNavigator;
RzDBNavigator2: TRzDBNavigator;
RzLabel30: TRzLabel;
RzEdSchet: TRzEdit;
RzLaBanner: TRzLabel;
PopupMenu: TPopupMenu;
N1: TMenuItem;
RzMBPrint: TRzMenuButton;
RzLabel31: TRzLabel;
RzEdAllCount: TRzEdit;
N2: TMenuItem;
RzBBFindTovar: TRzBitBtn;
procedure RzGroupViewItems0Click(Sender: TObject);
procedure RzGroupViewItems1Click(Sender: TObject);
procedure RzBBRefreshClick(Sender: TObject);
procedure RzPageControlChange(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGridZayavkiDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure RzGroup2Items1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzCBOtdelNumberChange(Sender: TObject);
procedure RzBBAddGroupClick(Sender: TObject);
procedure RzEdFindTovarChange(Sender: TObject);
procedure RzBBAddTovarClick(Sender: TObject);
procedure RzTreeViewTovarsClick(Sender: TObject);
procedure SetDefaultValueComponents;
procedure RzTreeViewTovarsDblClick(Sender: TObject);
procedure RzGroup3Items0Click(Sender: TObject);
procedure RzGroup3Items1Click(Sender: TObject);
procedure RzGroup3Items2Click(Sender: TObject);
procedure RzGroup3Items3Click(Sender: TObject);
procedure RzBBCollapseClick(Sender: TObject);
procedure RzBBExpandClick(Sender: TObject);
procedure RzGroup1Items1Click(Sender: TObject);
procedure RzGroup1Items0Click(Sender: TObject);
procedure RzGroupZayavkiItems1Click(Sender: TObject);
procedure DBGridZayavkiSnabDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure RzGroupZayavkiItems2Click(Sender: TObject);
procedure RzGroupCreateItems1Click(Sender: TObject);
procedure RzGroup3Items4Click(Sender: TObject);
procedure RzGroupCreateItems0Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure RzGroupCreateItems6Click(Sender: TObject);
procedure RzMBPrintClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure RzBBFindTovarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmMainSklad: TfmMainSklad;
implementation
uses Store, SQLConst, KartochkaTovara, NewTovarGroup, NewTovar, DB, EdIzm,
Otdels, Sotrudniki, Country, TrebovanieOut, KnigaOut, ZayavkaSnab,
OrderIn, Postavshiki, KnigaIn, ReportInvent, ReportZayavkaF2;
{$R *.
procedure TfmMainSklad.RzGroupViewItems0Click(Sender: TObject);
begin
RzCBOtdelNumber.ClearSelection;
with dmStore do
begin
RzCBOtdelNumber.Text:='';
IBQZayavki.SQL.Clear;
IBQZayavki.SQL.Add(Get_List_Zayavka_With_TovarInfo);
IBQZayavki.SQL.Add('ORDER BY USERS.NAMEOTD, ZAYAVKAF1.DATEZAYAVKA');
IBQZayavki.Open;
RzPageControl.ActivePage:=tsZayavka;
DBGridZayavki.SetFocus;
end;
end;
procedure TfmMainSklad.RzGroupViewItems1Click(Sender: TObject);
var
ParentNode, ChildNode:TTreeNode;
i:integer;
ShowBanner:boolean;
begin
if not ListTovarLoaded then
with dmStore do
begin
ListTovarLoaded:=true;
ListDetailTovar.Clear;
RzPageControl.ActivePage:=tsTovars;
RzTreeViewTovars.Visible:=false;
RzBBRefresh.Visible:=false;
RzBBExpand.Visible:=false;
RzBBCollapse.Visible:=false;
RzLaProgress.Visible:=true;
RzProgressBar.Visible:=true;
Application.ProcessMessages;
RzTreeViewTovars.Items.Clear;
IBQTovar.SQL.Clear;
IBQTovar.SQL.Add('SELECT COUNT( TOVAR.IDTOVAR ) COUNT_OF_IDTOVAR FROM TOVAR');
IBQTovar.Open;
RzProgressBar.TotalParts:=IBQTovar.FieldByName('COUNT_OF_IDTOVAR').AsInteger;
RzProgressBar.PartsComplete:=0;
IBQGroupTovar.SQL.Clear;
IBQGroupTovar.SQL.Add(Get_List_GroupTovar);
IBQGroupTovar.SQL.Add('ORDER BY GROUPTOVAR.IDGROUP');
IBQGroupTovar.Open;
IBQGroupTovar.First;
while not IBQGroupTovar.Eof do
begin
IBQTovar.SQL.Clear;
IBQTovar.SQL.Add(Get_List_Tovar_small);
IBQTovar.SQL.Add('WHERE TOVAR.IDGROUP = '+IntToStr(IBQGroupTovar.FieldByName('IDGROUP').AsInteger));
IBQTovar.Open;
ParentNode:=RzTreeViewTovars.Items.Add(nil,Trim(IBQGroupTovar.FieldByName('NAMEGROUP').AsString));
ParentNode.StateIndex:=4;
IBQTovar.First;
while not IBQTovar.Eof do
begin
New(DetailTovarInfo);
DetailTovarInfo.ID:=IBQTovar.FieldByName('IDTOVAR').AsInteger;
DetailTovarInfo.NameTovar:=IBQTovar.FieldByName('NAMETOVAR').AsString;
DetailTovarInfo.Country:=Trim(IBQTovar.FieldByName('NAMECOUNTRY').AsString);
DetailTovarInfo.EdIzm:=Trim(IBQTovar.FieldByName('NAMEEDIZM').AsString);
DetailTovarInfo.Price:=IBQTovar.FieldByName('PRICE').AsFloat;
DetailTovarInfo.Ostatok:=IBQTovar.FieldByName('COUNTTOV').AsFloat;
DetailTovarInfo.Schet:=IBQTovar.FieldByName('SCHET').AsInteger;
DetailTovarInfo.ClientsAdd:=IBQTovar.FieldByName('CLIENTSADD').AsInteger;
ChildNode:=RzTreeViewTovars.Items.AddChild(ParentNode,Trim(IBQTovar.FieldByName('NAMETOVAR').AsString));
ChildNode.StateIndex:=5;
ChildNode.Data:=DetailTovarInfo;
ListDetailTovar.Add(DetailTovarInfo);
RzProgressBar.IncPartsByOne;
IBQTovar.Next;
end;
IBQGroupTovar.Next;
end;
ShowBanner:=false;
for i:=0 to ListDetailTovar.Count-1 do
if PDetailTovarInfo(ListDetailTovar.Items[i]).ClientsAdd=1 then ShowBanner:=true;
RzLaBanner.Visible:=ShowBanner;
RzBBFindTovar.Visible:=ShowBanner;
RzTreeViewTovars.Visible:=true;
RzBBRefresh.Visible:=true;
RzBBExpand.Visible:=true;
RzBBCollapse.Visible:=true;
RzLaProgress.Visible:=false;
RzProgressBar.Visible:=false;
end;
if RzPageControl.ActivePage<>tsTovars then RzPageControl.ActivePage:=tsTovars;
RzTreeViewTovars.SortType:=stNone;
RzTreeViewTovars.SortType:=stText;
RzTreeViewTovars.SetFocus;
end;
procedure TfmMainSklad.RzBBRefreshClick(Sender: TObject);
begin
ListTovarLoaded:=false;
RzGroupViewItems1Click(Sender);
SetDefaultValueComponents;
end;
procedure TfmMainSklad.RzPageControlChange(Sender: TObject);
begin
RzCBOtdelNumber.ClearSelection;
if RzPageControl.ActivePage=tsZayavka then RzGroupViewItems0Click(Sender);
if RzPageControl.ActivePage=tsTovars then RzGroupViewItems1Click(Sender);
if RzPageControl.ActivePage=tsZayavkiSnab then RzGroupZayavkiItems1Click(Sender);
end;
procedure TfmMainSklad.FormResize(Sender: TObject);
begin
DBGridZayavki.Columns.Items[3].Width:=fmMainSklad.Width-620;
DBGridZayavkiSnab.Columns.Items[2].Width:=fmMainSklad.Width-508;
end;
procedure TfmMainSklad.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if NameOtdela<>'' then
begin
if not dmStore.IBQUsers.Transaction.InTransaction then
dmStore.IBQUsers.Transaction.StartTransaction;
dmStore.IBQUsers.SQL.Clear;
dmStore.IBQUsers.SQL.Add('UPDATE USERS SET STATEOTDELA=0 WHERE NAMEOTD='+NameOtdela);
dmStore.IBQUsers.ExecSQL;
dmStore.IBQUsers.Active:=false;
dmStore.IBQUsers.Transaction.Commit;
end;
end;
procedure TfmMainSklad.DBGridZayavkiDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
Pos:TPoint;
i:integer;
Res:array [1..12] of boolean;
MayDraw:boolean;
begin
if (dmStore.IBQZayavki.FieldByName('COUNTTOV').AsFloat<dmStore.IBQZayavki.FieldByName('COUNTTOVAR').AsFloat) and not (gdSelected in State) then
begin
DBGridZayavki.Canvas.Brush.Color:=$00B5AEFF;
DBGridZayavki.Canvas.FillRect(Rect);
DBGridZayavki.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
if DataCol=0 then
begin
Pos.X:=Rect.Left+Trunc((Rect.Right-Rect.Left-DBGridZayavki.Canvas.TextWidth(IntToStr(dmStore.IBQZayavki.RecNo)))/2);
Pos.Y:=Rect.Top+Trunc((Rect.Bottom-Rect.Top-DBGridZayavki.Canvas.TextHeight(IntToStr(dmStore.IBQZayavki.RecNo)))/2);
if dmStore.IBQZayavki.RecordCount>0 then
DBGridZayavki.Canvas.TextOut(Pos.X,Pos.Y,IntToStr(dmStore.IBQZayavki.RecNo))
end;
if DataCol=6 then
begin
Pos.X:=Rect.Left+Trunc((Rect.Right-Rect.Left-16)/2);
Pos.Y:=Rect.Top+Trunc((Rect.Bottom-Rect.Top-16)/2);
for i:=1 to 12 do Res[i]:=false;
for i:=1 to 12 do
begin
if ((dmStore.IBQZayavki.FieldByName('M'+IntToStr(i)+'STATE').AsInteger=1)
and (dmStore.IBQZayavki.FieldByName('M'+IntToStr(i)).AsInteger<>0)) then Res[i]:=true;
if ((dmStore.IBQZayavki.FieldByName('M'+IntToStr(i)+'STATE').AsInteger=0)
and (dmStore.IBQZayavki.FieldByName('M'+IntToStr(i)).AsInteger=0)) then Res[i]:=true;
end;
MayDraw:=True;
for i:=1 to 12 do if Res[i]=false then MayDraw:=false;
if MayDraw then
ImageList1.Draw(DBGridZayavki.Canvas,Pos.X,Pos.Y,3);
end;
end;
procedure TfmMainSklad.RzGroup2Items1Click(Sender: TObject);
begin
fmKartochka.Show;
end;
procedure TfmMainSklad.FormShow(Sender: TObject);
begin
with dmStore do
begin
RzCBOtdelNumber.ClearItems;
IBQUsers.SQL.Clear;
IBQUsers.SQL.Add('SELECT USERS.IDOTDELA, USERS.NAMEOTD FROM USERS');
IBQUsers.SQL.Add('ORDER BY USERS.NAMEOTD');
IBQUsers.Open;
IBQUsers.First;
RzCBOtdelNumber.Items.Add('Всеотделы');
while not IBQUsers.Eof do
begin
RzCBOtdelNumber.Items.Add(Trim(IBQUsers.FieldByName('NAMEOTD').AsString));
IBQUsers.Next;
end;
end;
end;
procedure TfmMainSklad.RzCBOtdelNumberChange(Sender: TObject);
var
IDOtdela:integer;
begin
if RzCBOtdelNumber.Text<>'' then
begin
if RzCBOtdelNumber.Text<>'Всеотделы' then
with dmStore do
begin
IBQUsers.SQL.Clear;
IBQUsers.SQL.Add('SELECT USERS.IDOTDELA, USERS.NAMEOTD FROM USERS');
IBQUsers.SQL.Add('WHERE USERS.NAMEOTD = '''+RzCBOtdelNumber.Text+'''');
IBQUsers.Open;
IDOtdela:=IBQUsers.FieldByName('IDOTDELA').AsInteger;
IBQZayavki.SQL.Clear;
IBQZayavki.SQL.Add(Get_List_Zayavka_With_TovarInfo);
IBQZayavki.SQL.Add('WHERE ZAYAVKAF1.IDUSER = '''+IntToStr(IDOtdela)+'''');
IBQZayavki.SQL.Add('ORDER BY ZAYAVKAF1.DATEZAYAVKA');
IBQZayavki.Open;
end
else
RzGroupViewItems0Click(Sender);
end;
end;
procedure TfmMainSklad.RzBBAddGroupClick(Sender: TObject);
begin
fmNewTovarGroup.Show;
end;
procedure TfmMainSklad.RzEdFindTovarChange(Sender: TObject);
var
i:integer;
begin
if RzTreeViewTovars.Items.Count>0 then
for i:=0 to RzTreeViewTovars.Items.Count-1 do
begin
if Pos(AnsiUpperCase(RzEdFindTovar.Text),AnsiUpperCase(RzTreeViewTovars.Items.Item[i].Text))>0 then
begin
RzTreeViewTovars.Select(RzTreeViewTovars.Items.Item[i], [ssLeft]);
RzTreeViewTovarsClick(Sender);
Exit;
end;
end;
end;
procedure TfmMainSklad.RzBBAddTovarClick(Sender: TObject);
begin
KindAction:=kaNewTovar;
fmNewTovar.Caption:='Созданиеновоготовара';
fmNewTovar.RzCBCountryTovar.Style:=csDropDownList;
fmNewTovar.RzCBEdIzm.Style:=csDropDownList;
fmNewTovar.RzCBGroupTovar.Style:=csDropDownList;
fmNewTovar.RzCBGroupTovar.Enabled:=true;
fmNewTovar.RzBBAddNewGroupTovar.Enabled:=true;
fmNewTovar.RzCBEdIzm.Enabled:=true;
fmNewTovar.Show;
end;
procedure TfmMainSklad.RzTreeViewTovarsClick(Sender: TObject);
var
SelectedNode:TTreeNode;
begin
RzLaInfo.Visible:=false;
SelectedNode:=RzTreeViewTovars.Selected;
if SelectedNode<>nil then
begin
if SelectedNode.Parent<>nil then
begin
DetailTovarInfo:=SelectedNode.Data;
RzEdSchet.Text:=IntToStr(DetailTovarInfo.Schet);
RzEdCountTovar.Text:=FloatToStr(DetailTovarInfo.Ostatok);
RzEdEdIzm.Text:=DetailTovarInfo.EdIzm;
RzEdCountry.Text:=DetailTovarInfo.Country;
RzEdPrice.Text:=FloatToStr(DetailTovarInfo.Price);
if DetailTovarInfo.ClientsAdd=1 then RzLaInfo.Visible:=true;
end
else
SetDefaultValueComponents;
end;
end;
procedure TfmMainSklad.SetDefaultValueComponents;
begin
RzEdCountry.Text:='';
RzEdEdIzm.Text:='';
RzEdPrice.Text:='';
RzEdCountTovar.Text:='';
RzEdSchet.Text:='';
end;
procedure TfmMainSklad.RzTreeViewTovarsDblClick(Sender: TObject);
var
SelectedNode:TTreeNode;
begin
RzLaInfo.Visible:=false;
SelectedNode:=RzTreeViewTovars.Selected;
if SelectedNode<>nil then
begin
if SelectedNode.Parent<>nil then
begin
KindAction:=kaEditTovar;
DetailTovarInfo:=SelectedNode.Data;
fmNewTovar.RzCBCountryTovar.Style:=csDropDown;
fmNewTovar.RzCBEdIzm.Style:=csDropDown;
fmNewTovar.RzCBGroupTovar.Style:=csDropDown;
fmNewTovar.RzCBGroupTovar.Enabled:=false;
fmNewTovar.RzBBAddNewGroupTovar.Enabled:=false;
fmNewTovar.RzCBGroupTovar.Text:=SelectedNode.Parent.Text;
fmNewTovar.RzCBEdIzm.Text:=DetailTovarInfo.EdIzm;
fmNewTovar.RzCBEdIzm.Enabled:=false;
fmNewTovar.RzEdNameTovar.Text:=SelectedNode.Text;
fmNewTovar.Tag:=DetailTovarInfo.ID;
fmNewTovar.RzEdSchet.Text:=IntToStr(DetailTovarInfo.Schet);
fmNewTovar.RzEdCount.Text:=FloatToStr(DetailTovarInfo.Ostatok);
if DetailTovarInfo.Country<>'' then fmNewTovar.RzCBCountryTovar.Text:=DetailTovarInfo.Country;
if DetailTovarInfo.Price<>0 then fmNewTovar.RzEdPrice.Text:=FloatToStr(DetailTovarInfo.Price);
fmNewTovar.Caption:='Редактирование свойств товара';
fmNewTovar.Show;
//RzEdCountTovar.Text:=FloatToStr(DetailTovarInfo.Ostatok);
RzEdEdIzm.Text:=DetailTovarInfo.EdIzm;
RzEdCountry.Text:=DetailTovarInfo.Country;
RzEdPrice.Text:=FloatToStr(DetailTovarInfo.Price);
if DetailTovarInfo.ClientsAdd=1 then RzLaInfo.Visible:=true;
end
else
SetDefaultValueComponents;
end;
end;
procedure TfmMainSklad.RzGroup3Items0Click(Sender: TObject);
begin
fmEdIzm.Show;
end;
procedure TfmMainSklad.RzGroup3Items1Click(Sender: TObject);
begin
fmOtdels.Show;
end;
procedure TfmMainSklad.RzGroup3Items2Click(Sender: TObject);
begin
fmSotrudniki.Show;
end;
procedure TfmMainSklad.RzGroup3Items3Click(Sender: TObject);
begin
fmCountry.Show;
end;
procedure TfmMainSklad.RzBBCollapseClick(Sender: TObject);
begin
RzTreeViewTovars.FullCollapse;
SetDefaultValueComponents;
end;
procedure TfmMainSklad.RzBBExpandClick(Sender: TObject);
begin
RzTreeViewTovars.FullExpand;
SetDefaultValueComponents;
end;
procedure TfmMainSklad.RzGroup1Items1Click(Sender: TObject);
begin
TrebovanieAction:=taNew;
fmTrebovanieOut.Show;
end;
procedure TfmMainSklad.RzGroup1Items0Click(Sender: TObject);
begin
fmKnigaOut.Show;
end;
procedure TfmMainSklad.RzGroupZayavkiItems1Click(Sender: TObject);
begin
with dmStore do
begin
IBQZayavkiF2.SQL.Clear;
IBQZayavkiF2.SQL.Add(Get_List_ZayavkaF2_With_TovarInfo);
IBQZayavkiF2.SQL.Add('ORDER BY ZAYAVKAF2.DATEZAYAVKAF2');
IBQZayavkiF2.Open;
RzPageControl.ActivePage:=tsZayavkiSnab;
DBGridZayavkiSnab.SetFocus;
end;
end;
procedure TfmMainSklad.DBGridZayavkiSnabDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
Pos:TPoint;
i:integer;
Res:array [1..12] of boolean;
MayDraw:boolean;
begin
if DataCol=0 then
begin
Pos.X:=Rect.Left+Trunc((Rect.Right-Rect.Left-DBGridZayavkiSnab.Canvas.TextWidth(IntToStr(dmStore.IBQZayavkiF2.RecNo)))/2);
Pos.Y:=Rect.Top+Trunc((Rect.Bottom-Rect.Top-DBGridZayavkiSnab.Canvas.TextHeight(IntToStr(dmStore.IBQZayavkiF2.RecNo)))/2);
if dmStore.IBQZayavkiF2.RecordCount>0 then
DBGridZayavkiSnab.Canvas.TextOut(Pos.X,Pos.Y,IntToStr(dmStore.IBQZayavkiF2.RecNo))
end;
if DataCol=5 then
begin
Pos.X:=Rect.Left+Trunc((Rect.Right-Rect.Left-16)/2);
Pos.Y:=Rect.Top+Trunc((Rect.Bottom-Rect.Top-16)/2);
for i:=1 to 12 do Res[i]:=false;
for i:=1 to 12 do
begin
if ((dmStore.IBQZayavkiF2.FieldByName('M'+IntToStr(i)+'STATE').AsInteger=1)
and (dmStore.IBQZayavkiF2.FieldByName('M'+IntToStr(i)).AsInteger<>0)) then Res[i]:=true;
if ((dmStore.IBQZayavkiF2.FieldByName('M'+IntToStr(i)+'STATE').AsInteger=0)
and (dmStore.IBQZayavkiF2.FieldByName('M'+IntToStr(i)).AsInteger=0)) then Res[i]:=true;
end;
MayDraw:=True;
for i:=1 to 12 do if Res[i]=false then MayDraw:=false;
if MayDraw then
ImageList1.Draw(DBGridZayavkiSnab.Canvas,Pos.X,Pos.Y,3);
end;
end;
procedure TfmMainSklad.RzGroupZayavkiItems2Click(Sender: TObject);
var
i:integer;
begin
ListZayavkaSnab.Clear;
fmZayavkaSnab.Show;
for i:=1 to 12 do
if fmZayavkaSnab.FindComponent('RzEdM'+IntToStr(i))<>nil then
(fmZayavkaSnab.FindComponent('RzEdM'+IntToStr(i)) as TRzEdit).Text:='0';
fmZayavkaSnab.RzPnMonthes.Enabled:=false;
end;
procedure TfmMainSklad.RzGroupCreateItems1Click(Sender: TObject);
begin
OrderAction:=oaNew;
fmOrderIn.Show;
end;
procedure TfmMainSklad.RzGroup3Items4Click(Sender: TObject);
begin
fmPostavshiki.Show;
end;
procedure TfmMainSklad.RzGroupCreateItems0Click(Sender: TObject);
begin
fmKnigaIn.Show;
end;
procedure TfmMainSklad.N1Click(Sender: TObject);
var
IDSvodnZayavka:integer;
begin
if Application.MessageBox('Выдействительнохотитеудалитьвыбраннуюзапись?', PChar(StrSB),MB_YESNO+MB_ICONQUESTION)=IDYES then
begin
IDSvodnZayavka:=dmStore.IBQZayavkiF2.FieldByName('IDZAYAVKAF2').AsInteger;
if not dmStore.IBQZayavkiF2.Transaction.InTransaction then
dmStore.IBQZayavkiF2.Transaction.StartTransaction;
dmStore.IBQZayavkiF2.SQL.Clear;
dmStore.IBQZayavkiF2.SQL.Add('DELETE FROM ZAYAVKAF2 '+
'WHERE (ZAYAVKAF2.IDZAYAVKAF2 = '''+IntToStr(IDSvodnZayavka)+''')');
dmStore.IBQZayavkiF2.ExecSQL;
dmStore.IBQZayavkiF2.Active:=false;
dmStore.IBQZayavkiF2.Transaction.Commit;
RzGroupZayavkiItems1Click(Self);
end;
end;
procedure TfmMainSklad.RzGroupCreateItems6Click(Sender: TObject);
begin
with dmStore do
begin
IBQTemp.SQL.Clear;
IBQTemp.SQL.Add('SELECT TOVAR.IDTOVAR, TOVAR.NAMETOVAR, TOVAR.COUNTTOV, EDIZM.IDEDIZM, EDIZM.NAMEEDIZM, TOVAR.SCHET');
IBQTemp.SQL.Add('FROM TOVAR');
IBQTemp.SQL.Add('INNER JOIN EDIZM ON (TOVAR.IDEDIZM = EDIZM.IDEDIZM)');
IBQTemp.SQL.Add('ORDER BY TOVAR.SCHET');
IBQTemp.Open;
fmReportInvent.QuickRep1.PreviewModal;
end;
end;
procedure TfmMainSklad.RzMBPrintClick(Sender: TObject);
begin
fmReportZayavkaF2.QuickRep1.PreviewModal;
end;
procedure TfmMainSklad.N2Click(Sender: TObject);
begin
if Application.MessageBox('Выдействительнохотитеудалитьвсезаписи?', PChar(StrSB),MB_YESNO+MB_ICONQUESTION)=IDYES then
with dmStore do
begin
if not IBQZayavkiF2.Transaction.InTransaction then
IBQZayavkiF2.Transaction.StartTransaction;
IBQZayavkiF2.SQL.Clear;
IBQZayavkiF2.SQL.Add('DELETE FROM ZAYAVKAF2');
IBQZayavkiF2.ExecSQL;
IBQZayavkiF2.Active:=false;
IBQZayavkiF2.Transaction.Commit;
RzGroupZayavkiItems1Click(Self);
end;
end;
procedure TfmMainSklad.RzBBFindTovarClick(Sender: TObject);
var
i:integer;
ID:integer;
begin
ID:=-1;
for i:=0 to ListDetailTovar.Count-1 do
if PDetailTovarInfo(ListDetailTovar.Items[i]).ClientsAdd=1 then
begin
ID:=i;
Break;
end;
if ID>-1 then
for i:=0 to RzTreeViewTovars.Items.Count-1 do
begin
if Pos(AnsiUpperCase(Trim(PDetailTovarInfo(ListDetailTovar.Items[ID]).NameTovar)),AnsiUpperCase(RzTreeViewTovars.Items.Item[i].Text))>0 then
begin
RzTreeViewTovars.Select(RzTreeViewTovars.Items.Item[i], [ssLeft]);
RzTreeViewTovarsClick(Sender);
Exit;
end;
end;
end;
. Пребразовать двумерную матрицу размерности n∙n в одномерный массив путем обхода всех элементов двумерной матрицы по скручивающейся против часовой стрелке спирали. Прога будет состоять из 2ух массивов первый это квадратная матрица 3х3 2х2 и т.д. второй просто массив по порядку числа которые мы нашли в матрице (по условию) Ещё раз повторю написать в Delphi 6-7.
Здравствуйте, создал сетевой чат по статье pblog.ru/?p=91 с помощью клиент и сервер сокетов. Все работает, но связь устанавливается только при личном соединении компьютеров(wi-fi(компьютер-компьютер) или через кабель). Подскажите в каком направлении мне нужно двигатся, чтобы создать чат, который можно было бы использовать в обычной сети. Статьи/исходники чатов приветствуются.