Komputer Świat Ekspert - Forum: [FAQ] Delphi - Komputer Świat Ekspert - Forum

Skocz do zawartości

  • 3 stron +
  • 1
  • 2
  • 3

[FAQ] Delphi tu są pytania z odpowiedziami z delphi

#1 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 05 październik 2004, 17:24

postanowiłem zaproponować wam zrobienia FAQ na forum tu w tym dziale
no... ale tu moderzy by mieli co robić. forumowicze zadają pytania ale b. proste
takie prawie oczywiste... i ktoś odpowiada w tym temacie. tzn... jedno pytanie
jedna odp... to zaczynamy:?
Asdef PCTown.pl
Oxi: REGULAMIN!

  • W FAQ można umieszczać tylko pytania z odpowiedziami. Inne posty będą kasowane.

  • Starajcie się wyraźnie opisać czego dotyczy dany post i odpowiednio
    zredagować post, tak żeby łatwo można było z niego korzystać. Kod proszę
    wrzucać pomiędzy [ code ] a [ /code ]

  • Piszcie starannie i w miarę możliwości bez błędów - posty z bełkotem albo
    częstymi błędami będą odrzucane.


Morał:
nie zadawać pytań bo inaczej zrobi nam się tu bałagan :(


Uwaga: w niektórych odnośnikach może być prze kierowanie do postu gdzie jest kilka odpowiedzi, tak więc należy przeczytać cały post a odpowiedź na pewno się znajdzie
Odnośniki przygotował programista1101 od 1 do 70:lol:
1. Jak otworzyć plik *.jpg z poziomu Eksploratora Windows? (autor: LewB ar)
2. Jak zrobić menu oparte na Buttonach? (autor: Oxi)
3. Jak usunąć pliki z danego katalogu? (autor: LewB ar)
4. Jak zrobić, aby po kliknięciu a Button pojawił się napis w labelu? (autor: Asdef)
5. Jak sprawdzić, czy wpisano liczbę a nie ciąg znaków? (autor: LewB ar)
6. Jak odczytać tekst spod gwiazdek? (autor: Asdef)
7. Jak sprawdzić datę i czas? (autor: Asdef)
8. ak mogę zamykać system, wylogować się, uruchomić ponownie, w 9x/ME/XP? (autor: Asdef)
9. Jak zmienić roździelczość? (autor: yoyek, Asdef)
10. Jak symulować roździelczość w programie? (autor: Asdef)
11. Jak stworzyć komponent podczas działania programu? (autor: Draco1x7, Asdef)
12. Jak przekonwertować zmienną na inny typ? (autor: Bełdzio, Asdef)
13. Jak jak zabić menagera zadań w win XP? (autor: Br@iner, Asdef)
14. Jak zamknąć Windows'a? (autor: Bełdzio)
15. Jak zrobić negatyw jakiejś bitmapy? (autor: LewB ar)
16. Jak zapisać, odcvzytać do pliku zawartość ListView oraz innych list? (autor: Kamil Wajda)
17. Jak skopiować pliki? (autor: MesterLuk)
18. Jak zmieścić w string'u więcej niż 255 znaków? (autor: Asdef)
19. Jak pobrać kod ASCII dla każdego znaku? (autor: LewB ar)
20. Jak bezpiecznie przekonwertować zmienną typu łańcuchowego na zmienną typu zmiennoprzecinkowego? (autor: HNB)
21. Jak zrobić przezroczystą formę? (autor: Asdef)
22. Jak zrobic zaokrąglone rogi? (autor: Zaper)
23. Jak włączyc i wyłączyć monitor? (autor: Zaper)
24. Co zrobić aby po kliknieciu na Button wkleiłsię tag HTML do SynEdita? (autor: markollx)
25. Jak zrobić autostart proramu? (autor: denza)
26. Jak zrobić bazę danych opartą na plikach typowanych? (autor: programista1101)
27. Jak zmienić litery w Edicie z małych na duże? (autor: Asdef)
28. Jak zmienic duże litery na małe? (autor: Cyrkiel)
29. Jak wydrukować RichEdit za pomocą PrintDialog? (autor: delphinista007)
30. Jak sprawdzić, czy podana liczba jest liczbą pierwszą? (autor: jancu)
31. Jak pobrać scieżki do folderów systemowych? (autor: programista1101)
32. Jak zamienić plik SWF na EXE? (autor: MitS79)
33. Jak zmieniać wartość schowka? (autor: Kajetanek)
34. Jak zrobić przyciemnianie okna? (autor: Zaper)
35. Jak zapisac plik tekstowy o wybranym przez użytkownika rozszerzeniu? (autor: programista1101)
36. Jak zobaczyć do czego prowadzi skrót? (autor: R@fcio)
37. jak pobrać liste zainstalowanych programów? (autor: programista1101)
38. jak wyświetlić wszystkie dyski? (autor: Matpien3)
39. Jak pobrac liste wartości danego klucza w rejestrze? (autor: R@fcio)
40. Jak sprawdzić jakie atrybuty ma dany plik? (autor: proramista1101)
41. Jak wyszukać jakąś wartość w ListView? (autor: Matpien3)
42. Jak zaszyfrować tekst? (autor: programista1101)
43. Jak przekierować port? (autor: Matpien3)
44. Jak zaszyfrować/odszyfrować plik z użyciem MMX? (autor: Cyrkiel)
45. Jak korzystać z TidTCPClient i TidTCPSerwer? (autor: Kajetanek)
46. Jak za pomocą TSerwerSocket obsłużyć wiele wątków? (autor: Matpien3)
47. Jak obsłuzyc wiele wątków w TidTCPSerwer? (autor: Kajetanek)
48. Jak narysować losowe wygiete linie? (autor: Matpien3)
49. Jak wczytać X literę w Y linii w Memo? (autor: Kajetanek)
50. Jak skopiowac fragment stringu do innego? (autor: Matpien3)
51. List wyjątków w Delphi (autor: programista1101)
52. Jak wyswietlić systemowe okno własciwości dla wybranego elementu? (autor: migajek)
53. Kody klawiszy w Delphi (autor: programista1101)
54. Jak wydrukować RichEdit za pomocą notatnika? (autor: delphowiec)
55. Jak to jest naprawdę z tymi stringami? (autor: KSMłody)
56. Jak to jest naprawdę z tymi stringami cz. II (autor; programista1101)
57. jak przesunąć kursor po wstawieniu czegos SelTextem do synedit? (autor: miszczu49)
58. Jak zamienić kolor na format HTML? (autor: szkielet)
59. Jak namalowac coś na pasku statusu? (autor: programista1101)
60. Jak ściagnąc plik z internetu? (autor: szkielet)
61. Jak odczytac położenie kursora myszy? (autor: Matpien3)
62. Kilka algorytmów (autor: programista1101)
63. jak wyciagnąc właściwośc z tagu HTML? (autor: migajek)
64. Jak sprawdzic ilośc wolnego miejsca na dysku? (autor: lukas_10)
65. Jak wyszukac plik na dysku? (autor: programista1101)
66. Od czego zacząc chcąc programowac w delphi? (autor: delphinista007)
67. jak narysować czcionke, która jest wygładzana? (autor: -=PcSA=-)
68. Co zrobic, aby było można wpisywac polskie znaki w delphi? (autor: slavo666)
69. Jak utworzyc wiele komponentów Label? (autor: DESPERADOS)
70. Jak odwołąc się do kilku komponentów jednoczesnie? (autor: programista1101)

71. Jak odczytać położenie kursora myszki, odswieżać je co jakiś okres czasu i wyświetlić na dwóch labelach??(autor: Lukas_10)
72. Jak zmienić ikonę programu napisanego w Delphi?(autor: slavo666)
73. Jak napisać własną funkcję? (autor: KSMłody)
74. Jak ułatwić sobie prace z delphi? (autor: mariuszlorenc i programista1101)
75. Jak w RichEdit zmienić odstęp między wierszami ? (autor: -=PcSA=-)
76. Jak sprawdzić pozycję scrollbar'ow np. w RichEdit i jak ją ustawić? (autor: -=PcSA=-)
77. Jak sprawdzic czy ciag znakow jest liczba calkowita?(autor: Ali240)
78. Jak sprawic zeby mozna bylo poruszac forma lapiac za nia (a nie tylko za pasek)?[(autor: ALi240)

79. jak skompilowac plik w NASM - metoda z ASM IDE 0.0.3a(autor: asiekierka)
80. jak do synedita wpisać tag za pomocą opendialog <img scr>?(autor: Asdef)

w jednym poście (

81. Jak całkowicie usunąć plik z dysku ??(autor: Br@iner)
82. Jak pobrać nazwy plików w Schowku ??(autor: Br@iner)
83. Jak stworzyć plik Excela bez korzystania z OLE ??(autor: Br@iner)
84. Jak obliczyć sumę kontrolną pliku ?? (autor: Br@iner)
85. Jak sprawdzić czy dwa pliki są takie same ?? (autor: Br@iner)
86. Jak pobrać ikonki z danego pliku ??(autor: Br@iner)
)

87. Jak stworzyc tzw. Splash Screen(Ekran Powitalny)? (autor: wojsta)
88. Jak używać bibliotek DLL przez łączenie dynamiczne(autor: v0lt)
89. Menu z prawej strony(autor: andrzej_aa)
90. jak umieścić program w zasobniku? (autor: andzej_aa)
91. Jak uruchomić stronę www w domyślnej przeglądarce. (autor: -=PcSA=- )

92. Jak zrobić, aby każda forma programu miała swój przycisk na pasku zadań?. (autor: KSMłody )
93. Demo THGG, Demo Stoper. (autor: Shooter )
94. Jak pobrać długość piosenki?. (autor: pat )




...

Użytkownik Asdef edytował ten post 04 lipiec 2006, 10:59

Nie możesz znaleźć odpowiedzi na swoje pytanie? – my ci pomożemy PC Town najwyższy poziom w sieci !
Forum PC Town
0

#0 Bot Reklamowy

  • Grupa: Reklama

#2 Użytkownik nie jest zalogowany   LewB ar 

  • LewBar
  • PipPip
  • Grupa: Czytelnicy
  • Postów 817
  • Rejestracja: 12-maj 04

Napisano 06 grudzień 2004, 23:59

Naskrobałem tu kiedyś taki kodzik, ale chyba coś 'bazy zabrakło'.

Więc napiszę kod programu do otwierania plików np: *.jpg - z poziomu Exploratora Windows.

Żeby wszystko było pięknie trzeba dokonać zmian w rejestrze. Można to zrobić ręcznie, ale przecież tu chodzi o kod.

uses ... Registry;

...

procedure TForm1.FormCreate(Sender: TObject);
var
   klucz : TRegistry;
begin
   klucz := TRegistry.Create;
   klucz.RootKey := HKey_Classes_Root;
   klucz.OpenKey('.' + '124', true);
   klucz.OpenKey('Shell\Open\Command', true);
   klucz.WriteString('', 'Ścieżka_proga %1');
   klucz.CloseKey;
   klucz.Free;
end;

end.


Uwaga "Ścieżka_proga" to nie ścieżka do wyżej podanego progamu, ale ścieżka do programu, który będzie otwierał pliki (nie zapomnij dopisać również %1). W tym przypadku będzie to przeglądarka graficzna. Aby poprawnie otwierała pliki *.jpg należy umieścić w niej takie linijki:

procedure TForm1.FormCreate(Sender: TObject);
begin
   if ParamStr(1) = '' then //1
      exit else
   Image1.Picture.LoadFromFile(ParamStr(1)); //2
end;


//1 Jeżeli parametr 1. jest = '' (pusty), czyli uruchomiliśmy program klikając ma
*.exe, to nie będą wykonywane już żadne czynności z FormCreate;
//2 Jeżeli parametr 1. nie jest = '' (zawiera ścieżkię pliku jpg), czyli uruchomiliśmy przeglądarką klikając na *.jpg, to załaduj plik do Image1 - proste.

Teraz drugi kod - jak zrobić, żeby na formie był wyświetlany obrazek jako tło kiedy jego rozmiar jest mniejszy niż okno.

procedure TForm1.FormPaint(Sender: TObject);
var
   x, y : integer;
   Bm : TBitmap;
begin
   x := 0;
   y := 0;
   Bm := TBitmap.Create;
   Bm.LoadFromFile('plik.bmp');
   while x < Form1.Width do
      begin
         Canvas.Draw(x, y, Bm);
         x := x + Bm.Width;
         if x >= Form1.Width then
            begin
               x := 0;
               y := y + bm.Height;
            end;
         if y >= Form1.Height then
            x := Form1.Width;
      end;
   Bm.Free;
end;

Użytkownik LewB ar edytował ten post 25 luty 2005, 14:17

LewBar
0

#0 Bot Reklamowy

  • Grupa: Reklama

#3 Użytkownik nie jest zalogowany   Oxi 

  • Ronin
  • Grupa: Moderator po przejściach
  • Postów 2482
  • Rejestracja: 19-wrzesień 03

Napisano 11 grudzień 2004, 14:05

Asdef pisał, żebym wrzucił tu kod, który napisałem w tym konkursie, więc dodaje go poniżej.

---

To menu nie jest skończone tak, żeby można go z miejsca zastosować w swoim programie. Zrobiłem tylko to co pisał Bełdzio - zresztą jak zobaczyłem, że zainteresowanie jest niewielkie to zająłem się ciekawszymi rzeczami, więc nie miejcie pretensji za tą "prowizorkę" :)
Ale bez większych problemów można je dokończyć tak, żeby było w pełni funkcjonalne.

A teraz do rzeczy:
Do reprezentowania menu stworzyłem klasę XPMenu (nie pytajcie dlaczego tak ją nazwałem - sam się zastanawiam ;) ). Żeby ułatwić sobie (i ewentualnie innym) życie umieściłem tą klasę w osobnym unicie. Oto on:

unit XPMenuDef;

interface

uses Classes, Graphics, Controls, StdCtrls, ExtCtrls;

const menu_height = 24;
       scroll_step = 15;

type
  TXPMenu = class
    constructor Create(aOwner : TComponent; aParent : TWinControl);
    destructor Destroy; override;
    procedure SetSize(aLeft, aTop, aWidth, aHeight : Integer);
    procedure SetTitle(aTitle : string);
    procedure OnPaint(Sender: TObject);
    procedure OnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure OnTimer(Sender: TObject);
    procedure OnMouseEnterItem(Sender: TObject);
    procedure OnMouseLeaveItem(Sender: TObject);
  private
    PaintBox : TPaintBox;
    Timer : TTimer;
    title : String;
    left, top, width, height : Integer;
    active : Boolean;
  public
    Panel : TPanel;
  end;

implementation


constructor TXPMenu.Create(aOwner : TComponent; aParent : TWinControl);
begin
  inherited Create;
  PaintBox := TPaintBox.Create(aOwner);
  PaintBox.Parent := aParent;
  PaintBox.OnPaint := OnPaint;
  PaintBox.OnMouseUp := OnMouseUp;
  Panel := TPanel.Create(aOwner);
  Panel.Parent := aParent;
  Panel.BevelOuter := bvNone;
  Panel.Color := $F5F1F0;
  PaintBox.Cursor := crHandPoint;
  Timer := TTimer.Create(aOwner);
  Timer.Interval := 1;
  Timer.Enabled := False;
  Timer.OnTimer := OnTimer;
  active := True;
end;

destructor TXPMenu.Destroy;
begin
  Timer.Free;
  Panel.Free;
  PaintBox.Free;
  inherited Destroy;
end;

procedure TXPMenu.OnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Timer.Enabled := True;
end;

procedure TXPMenu.SetSize(aLeft, aTop, aWidth, aHeight : Integer);
begin
  left := aLeft;
  top := aTop;
  width := aWidth;
  height := aHeight;
  PaintBox.Left := left;
  PaintBox.Top := top;
  PaintBox.Width := width;
  PaintBox.Height := menu_height;
  Panel.Left := left;
  Panel.Top := top + menu_height;
  Panel.Width := width;
  Panel.Height := height - menu_height;
end;

procedure TXPMenu.SetTitle(aTitle : string);
begin
  title := aTitle;
  PaintBox.Repaint;
end;

procedure TXPMenu.OnMouseEnterItem(Sender: TObject);
begin
  (Sender as TLabel).Font.Style := [fsUnderline];
end;

procedure TXPMenu.OnMouseLeaveItem(Sender: TObject);
begin
  (Sender as TLabel).Font.Style := [];                   
end;

procedure TXPMenu.OnTimer(Sender: TObject);
begin
  if active then
    if Panel.Height>scroll_step then Panel.Height := Panel.Height - scroll_step
                                else begin
                                       active := False;
                                       Timer.Enabled := False;
                                       Panel.Height := 0;
                                       PaintBox.Repaint;
                                       Exit;
                                     end;
  if not active then
    if Panel.Height<(height-menu_height-scroll_step) then Panel.Height := Panel.Height + scroll_step
                                                     else begin
                                                            active := True;
                                                            Timer.Enabled := False;
                                                            Panel.Height := height - menu_height;
                                                            PaintBox.Repaint;
                                                          end;
end;

procedure TXPMenu.OnPaint(Sender: TObject);
var step_b, step_rg : Real;
    i : Byte;
begin
  with PaintBox.Canvas do
    begin
      for i:=0 to width do
        begin
          step_b := 53/width;
          step_rg := 61/width;
          Pen.Color := ((((146+Round(i*step_b))*256)+(119+Round(i*step_rg)))
*256)+(119+Round(i*step_rg));
          MoveTo(i, 0);
          LineTo(i, menu_height);
        end;

      Font.Size := 8;
      Font.Color := clWhite;
      Font.Style := [fsBold];
      Brush.Style := bsClear;
      TextOut((Width - 24 - TextWidth(title)) div 2, (menu_height-TextHeight(title)) div 2, title);

      Pen.Color := $EFDDD8;
      Brush.Color := $96746E;
      Brush.Style := bsSolid;
      Ellipse(Width-20, 3, Width-3, 20);
      Pen.Color := $CFBDB8;
      Ellipse(Width-19, 4, Width-4, 19);

      Pen.Color := clWhite;
      if active then for i:=0 to 1 do begin
                                        MoveTo(Width-15,10+i*4);
                                        LineTo(Width-12,7+i*4);
                                        Lineto(Width-8,11+i*4);
                                        MoveTo(Width-14,10+i*4);
                                        LineTo(Width-12,8+i*4);
                                        Lineto(Width-9,11+i*4);
                                      end
                else for i:=0 to 1 do begin
                                        MoveTo(Width-15,8+i*4);
                                        LineTo(Width-12,11+i*4);
                                        Lineto(Width-8,7+i*4);
                                        MoveTo(Width-14,8+i*4);
                                        LineTo(Width-12,10+i*4);
                                        Lineto(Width-8,7+i*4);
                                      end;
    end;
end;

end.


Gdzie:
menu_height - oznacza wysokość paska menu (tego z tytułem)
scroll_step - oznacza prędkość zwijania/rozwijania menu (a dokładniej krok)

Jak widać sporą część kodu stanowi kod rysujący okrągły znacznik stanu menu i gradient - można zamiast tego wkleić jakąś grafikę itp - co się komu podoba.
Procedury OnMouseEnterItem i OnMouseLeaveItem nie są konieczne ale dodałem je, żeby elementy menu (Labele) zachowywały się tak jak w XPTuning.

Ponizej przykładowy program wykorzystujący powyższy unit:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, XPMenuDef;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    XPMenu : TXPMenu;
    LabelTab : array [0..8] of TLabel;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var j : integer;
begin
  XPMenu := TXPMenu.Create(Form1, Form1);
  XPMenu.SetSize(16, 16, 195, 220);
  XPMenu.SetTitle('Windows XP');
  Button1.Enabled := False;
  Button2.Enabled := True;
  for j:=0 to 8 do
    begin
      LabelTab[j] := TLabel.Create(XPMenu.Panel);
      LabelTab[j].Parent := XPMenu.Panel;
      LabelTab[j].Left := 34;
      LabelTab[j].Top := 8 + j*20;
      LabelTab[j].Anchors := [akBottom];
      LabelTab[j].Cursor := crHandPoint;
      LabelTab[j].Font.Size := 8;
      LabelTab[j].OnMouseEnter := XPMenu.OnMouseEnterItem;
      LabelTab[j].OnMouseLeave := XPMenu.OnMouseLeaveItem;
    end;
  LabelTab[0].Caption := 'Menu kontekstowe';
  LabelTab[1].Caption := 'Pliki';
  LabelTab[2].Caption := 'Różne';
  LabelTab[3].Caption := 'System';
  LabelTab[4].Caption := 'Użytkownicy && logowanie';
  LabelTab[5].Caption := 'Ograniczenia';
  LabelTab[6].Caption := 'Menu start && Pasek zadań';
  LabelTab[7].Caption := 'Pulpit';
  LabelTab[8].Caption := 'Foldery systemowe';
end;

procedure TForm1.Button2Click(Sender: TObject);
var j : integer;
begin
  for j:=0 to 8 do LabelTab[j].Free;
  XPMenu.Free;
  Button1.Enabled := True;
  Button2.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Color := $00D3C7C3;
end;

end.

Żeby to zadziałało tak jak trzeba, wystarczy wrzucić na formę dwa Buttony (pierwszy będzie tworzył menu a drugi je likwidował). Najlepiej dać je w prawym dolnym rogu formy, żeby nie nakładały się z menu, które w powyższym demie umieściłem w lewym górnym rogu).
Trzeba jeszcze przypisać do Buttonów zdarzenia OnClick (odpowiednio Button1Click i Button2Click) oraz do Formy zdarzenie OnCreate (CreateForm).

Tutaj dałem na menu Labele, które mają być kolejnymi elementami menu - ale równie dobrze można w menu umieścić jakieś przyciski, obrazki itp. Trzeba tylko ustawić odpowiednie właściwości, żeby całość wyglądała tak jak trzeba.

Użytkownik Oxi edytował ten post 25 czerwiec 2005, 10:13

0

#0 Bot Reklamowy

  • Grupa: Reklama

#4 Użytkownik nie jest zalogowany   LewB ar 

  • LewBar
  • PipPip
  • Grupa: Czytelnicy
  • Postów 817
  • Rejestracja: 12-maj 04

Napisano 11 grudzień 2004, 14:17

procedure TForm1.Usun;
var
   sr : TSearchRec;
   kat : string;
   plik : string;
begin
     kat := 'C:\windows\temp';
     plik := '*.*';
     FindFirst(kat + plik, faAnyFile, sr);
     DeleteFile(kat + sr.Name);
     while FindNext(sr) = 0 do
        DeleteFile(kat + sr.Name);
     FindClose(sr);
end;


Jak pewnie niektórzy się domyslili to kodzik na usuwanie plików z danego katalogu. Do zmiennej kat podajemy ścieżkię katalogu do wyczyszczenia, a do zmiennej plik rozszerzenie(*.* - plik o dowolnym rozszerzeniu). Oczywiście jest to bardzo prosta procedura i gdy np: w danym katalogu jest jakiś inny folder to do już nie usunie(:P), ale tu przecież chodzi tylko o zasadę działania.

Użytkownik LewB ar edytował ten post 25 luty 2005, 14:20

LewBar
0

#5 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 12 grudzień 2004, 09:59

teraz naprawde prosta rzecz, ale jak ktos pierwszy raz siada do delphiego to zadaje takie pytanie

jak zrobic ze gdy kliknę na button to w labelu pokazuje mi sie napis

wystarczy utworzyc komponety takie jak: label, button
pod button wprowadzamy:
label1.caption:='button zostal klikniety';


Asdef
Rekrutacja na redaktorów: www.kanalia.toya.net.pl kontakt kanalia@poprostu.net
Szukam programistów (Delphi, C++, i inne) speców od systemów(Linux i inne) twórców muzy w (FL studio, Dj)oraz grafików (3D..2D każdy prog.) - pisanie artykułów oraz robienie kursów i tutoriali każda pomoc mile widziana? [url="http://"http://www.ks-ekspert.pl/forum/topic.asp?TOPIC_ID=22981"]FAQ Delphi [/url] uczestników forum
Chcę zrobić coś wielkiego pomóżcie mi w rozkwicie serwisu ;)

0

#6 Użytkownik nie jest zalogowany   LewB ar 

  • LewBar
  • PipPip
  • Grupa: Czytelnicy
  • Postów 817
  • Rejestracja: 12-maj 04

Napisano 12 grudzień 2004, 11:41

Asdef, a może coś troszkę trudniejszego.
Napewno każdy z początkujących pisz Kalkulator. Pojawia się problem co zrobić gdy do Edita zamiast liczby podamy ciąg znaków:?

function TForm1.Dodaj(pierwsza: string; druga: string): real;
begin
   try
      result := strtofloat(pierwsza) + strtofloat(druga);
   except on EConvertError do
      begin
         ShowMessage('To nie jest poprawna liczba rzeczywista');
         result := 0;
      end;   
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Edit3.Text := floattostr(Dodaj(Edit1.Text, Edit2.Text));
end;


Zamiast EConvertError(błąd podczas konwertowania zmiennych) można dać np E:Exception(każdy błąd).

Użytkownik LewB ar edytował ten post 25 luty 2005, 14:24

LewBar
0

#7 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 14 grudzień 2004, 18:23

<font color="red">Jak odczytać tekst spod gwiazdek </font id="red">


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  ExtCtrls, StdCtrls;



type

  TForm1 = class(TForm)

    Timer1: TTimer;

    Label1: TLabel;

    Label2: TLabel;

    CheckBox1: TCheckBox;

    procedure Timer1Timer(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure FormKeyDown(Sender: TObject; var Key: Word;

      Shift: TShiftState);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.Timer1Timer(Sender: TObject);

var

Uchwyt      : HWND;

NazwaKlasy  : String;

DlugBufora  : DWORD;

buffer      : string;

TxtLength   :integer;

begin

        Uchwyt:=WindowFromPoint(Mouse.CursorPos);

        DlugBufora := 64;

        SetLength(NazwaKlasy, DlugBufora);

        GetClassName(Uchwyt,Pchar(NazwaKlasy),DlugBufora);

        label1.caption:='Nazwa: '+ NazwaKlasy;

        PostMessage( Uchwyt, EM_SETPASSWORDCHAR, 0, 0 );

        TxtLength := SendMessage(Uchwyt, WM_GETTEXTLENGTH, 0, 0);

        txtlength := txtlength + 1;

        setlength (buffer, TxtLength);

        SendMessage(Uchwyt, WM_GETTEXT,TxtLength,longint(@buffer[1]) );

        Label2.Caption:='Tekst: '+buffer;



        if CheckBox1.Checked=false then // jesli nie wlaczony "BRUTAL"

           exit;

        for TxtLength:=1 to 300000 do

        begin

              if CheckBox1.Checked=false then

                 exit;

              PostMessage( TxtLength, EM_SETPASSWORDCHAR, 0, 0 );

        end;



end;



procedure TForm1.FormActivate(Sender: TObject);

begin

SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE + SWP_NOACTIVATE);

end;



procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

if Key=27 then close;

end;



end



<font color="red">jak sprawdzić czas i datę</font id="red">
tj. źródło na godzine

Canvas.TextOut(10,10,TimeToStr(Time));


tj. źródło na datę
Canvas.TextOut(10,10,DateToStr(Date));


<font color="red">Jak mogę zamykać system, wylogować się, uruchomić ponownie, w 9x/ME/XP w Delphi???
</font id="red">
ExitWindowsEx(EWX_REBOOT,0); //restart
ExitWindowsEx(EWX_SHUTDOWN,0); //stan wstrzymania
ExitWindowsEx(EWX_POWEROFF,0); //wyłącz
ExitWindowsEx(EWX_LOGOFF,0); //wylogowanie



<font color="green">yoyek</font id="green"><font color="red"> Jak zmienic rozdzielczosc...</font id="red">



procedure TForm1.Button1Click(Sender:TObject);

var Mode:TDeviceMode;

  S:String;

begin

  with Mode do

  begin

   dmSize:=SizeOf(Mode);

   dmBitsPerPel:=16;

   dmPelsWidth:=800;

   dmPelsHeight:=600;

   dmFields:=DM_PELSWIDTH+DM_PELSHEIGHT;

  end;

  case ChangeDisplaySettings(Mode,0) of

   DISP_CHANGE_SUCCESSFUL:S:='Operacja przebiegła pomyślnie';

   DISP_CHANGE_RESTART:S:='Aby zmiany odniosły skutek należy zrestartować systi';

   DISP_CHANGE_BADFLAGS:S:='Błędne pole dmFields';

   DISP_CHANGE_FAILED:S:='Błąd podczas ustawiania trybu';

   DISP_CHANGE_BADMODE:S:='Ten tryb nie jest obsługiwany';

   DISP_CHANGE_NOTUPDATED:S:='Rejestr nie został zaktualizowany';

  else S:='Nieznany kod wyniku';

  end;

   ShowMessage(S);

end;



<font color="red">jak symulować rozdzielczość w programie</font id="red">


const

ScreenWidth: LongInt = 800; {Rozdzielczość na formie}

ScreenHeight: LongInt = 600;



procedure TForm1.FormCreate(Sender: TObject);

var

x, y: LongInt; 

begin

form1.scaled := true;

x := getSystemMetrics(SM_CXSCREEN);

y := getSystemMetrics(SM_CYSCREEN);

if (x <> ScreenHeight) or (y <> ScreenWidth) then 

begin

form1.height := form1.height * x DIV ScreenWidth;

form1.width := form1.width * y DIV ScreenHeight;

end;

if x <> ScreenWidth then scaleBy(x, ScreenWidth);



end;







ps. to pomaga przy tym jak się sypie nasz program na innych rozdzielczościach a nie chcemy jej zmieniać naprawdę :)



<font color="green">Draco1x7</font id="green"><font color="red">Jak stworzyć komponent podczas działania programu?</font id="red">

A to kodzik:

var

Button : TButton;

begin

Button := TButton.Create(Self);

Button.Parent := Self; // Przypisanie rodzica

Button.Caption := 'Przycisk 1'; 

Button.Left := 100;

Button.Top := 100;

end;


Niektórym może się przydać.



<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">cytat:<hr height="1" noshade id="quote">yoyek napisał:

<font color="red">Nie pytanie z odpowiedzia, ale samo pytanie... Są programy "tylko do odczytu" ale z kodem... tzw w API czy cos takeigo ;/ o co w tym chodzi?? ;/</font id="red">
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
API (Application Programming Interface) - programistyczny interfejs aplikacyjny (aplikacji) - specyfikacja procedur, funkcji lub interfejsów umożliwiających komunikację z biblioteką, systemem operacyjnym lub innym systemem zewnętrznym w stosunku do aplikacji korzystającej z API.

text pochodzi z http://pl.wikipedia.org/wiki/API


<font color="red">konwercja zmiennych na inne typy </font id="red">
zacytuje ciebie bełdzio chyba się nie gniewasz? ;)

masz tu kilka przykładów :

IntToStr(Value: Integer): string;

IntToStr(Value: Int64): string;

CurrToStr(Value: Currency): string;

CurrToStrF(Value: Currency; Format: TFloatFormat; Digits: Integer): string;

FormatCurr(const Format: string; Value: Currency): string;

FloatToStr(Value: Extended): string;

FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string;

IntToHex(Value: Integer; Digits: Integer): string;

IntToHex(Value: Int64; Digits: Integer): string;

FloatToText(Buffer: PChar; const Value; ValueType: TFloatValue; Format: TFloatFormat; Precision, Digits: Integer): Integer;

FloatToTextFmt(Buffer: PChar; const Value; ValueType: TFloatValue; Format: PChar): Integer;

StrToInt(const S: string): Integer;

StrToInt64(const S: string): Int64;

StrToInt64Def(const S: string; Default: Int64): Int64;

StrToIntDef(const S: string; Default: Integer): Integer;

StrToCurr(const S: string): Currency;

StrToFloat(const S: string): Extended;

TextToFloat(Buffer: PChar; var Value; ValueType: TFloatValue): Boolean;

FormatDateTime(const Format: string; DateTime: TDateTime): string;

DateTimeToStr(DateTime: TDateTime): string;

DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);

DateToStr(Date: TDateTime): string;

DayOfWeek(Date: TDateTime): Integer;

StrToDate(const S: string): TDateTime;

StrToDateTime(const S: string): TDateTime;

StrToTime(const S: string): TDateTime;

Time: TDateTime;

TimeToStr(Time: TDateTime): string;

Date: TDateTime;

DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);

EncodeDate(Year, Month, Day: Word): TDateTime;

EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime; // Czy rok jest przestępny?

IsLeapYear(Year: Word): Boolean;

ColorToString - zamienia kolor na tekst, np: ColorToString(clWhite);

StringToColor - zamienia tekst na kolor, np: StringToColor('clWhite');

-----------------------------------------------------------------
String na PChar

var
s: string;
p: PChar;

begin
p:= PChar(s);
end;

------------------------------------------------------------------
Format('Liczba %d i liczba %d', [10, 34]);

Znacznik %d jest zamieniany na tekst, a jego wartość zapisana jest w tabeli. Poniżej znajduje się tabelka z opisem często używanych znaczników:

%d - liczba całkowita zamieniana jest na tekst
%x - liczba typu integer zamieniana jest na tekst zapisujący liczbę w postaci szesnastkowej
%e - liczba zmiennoprzecinkowa konwertowana jest na liczbę w postaci wykładniczej
%f - liczba zmiennoprzecinkowa przekształcana jest na tekst

Oczywiście nic nie stoi na przeszkodzie by sformatować liczbę na kilka sposobów:

Format('Liczba %d w postaci szesnastkowej wygląda tak %x', [154, 154]);

Br@iner teraz ciebie ;)

<font color="red">jak zabić menagera zadań w winXp</font id="red">


Najpierw umieść na formie komponent Timer i w zdarzeniu OnTimer komponentu wpisz:




procedure TForm1.Timer1Timer(Sender: TObject);

var

  hwnd : THandle;

begin

  hwnd := FindWindow(nil, 'Menedżer zadań Windows');

  SendMessage(hwnd, WM_CLOSE, 0, 0);

end;






Mam jeszcze jeden pomysł. Widziałem wiele postów o temaci "Jak skojarzyć plik z programem?"
Postanowiłem odpowiedzieć na to pytanie.

1. Dodajemy do rejestru odpowiednie klucze. Możemy to zrobić edytorem rejestru, lub w Delphi:

do uses dodajemy Registry;
i piszemy taką procedurkę np. w buttonie:


[b]var[/b]

   klucz : TRegistry;

[b]begin[/b]

   klucz := TRegistry.Create;

   klucz.RootKey := HKey_Classes_Root;

   klucz.OpenKey('.' + '[i]Nasze_rozszerzenie_np_txt[/i]', true);

   klucz.OpenKey('Shell', true);

   klucz.OpenKey('Open', true);

   klucz.OpenKey('Command', true);

   klucz.WriteString('', '[i]Ącieżka_do_naszego_programu[/i] %1');

   klucz.CloseKey;

   klucz.Free;

[b]end[/b];



Ten programik doda do rejestru odpowiednie klucze.

Teraz jeśli chcemy aby nasze pliki były wczytywane do Memo w naszym programie to piszemy następującą procedurę:


[b]procedure[/b] TForm1.FormCreate(Sender: TObject); 

[b]begin[/b]

   [b]if[/b] ParamStr(1) = '' [b]then[/b] [i]<font color="green">//Instrukcja sprawdza, czy program został uruchomiony z jakimś parametrem[/i]</font id="green">

      exit [b]else[/b]

      Memo1.Lines.LoadFromFile(ParamStr(1));

[b]end[/b];



Jeśli np. stworzyłeś przeglądarkę grafiki to procedura ta będzie wyglądała tak:


[b]procedure[/b] TForm1.FormCreate(Sender: TObject); 

[b]begin[/b]

   [b]if[/b] ParamStr(1) = '' [b]then[/b] [i]<font color="green">//Instrukcja sprawdza, czy program został uruchomiony z jakimś parametrem[/i]</font id="green">

      exit [b]else[/b]

      Image1.Picture.LoadFromFile(ParamStr(1));

[b]end[/b];



Od teraz wiecie jak otwierać pliki w swoim progsie 8)






Asdef
<h6><font color="red">Rekrutacja na redaktorów:</font id="red"> www.kanalia.toya.net.pl kontakt kanalia@poprostu.net
<font color="green">Szukam programistów (Delphi, C++, i inne) speców od systemów(Linux i inne) twórców muzy w (FL studio, Dj)oraz grafików (3D..2D każdy prog.) - pisanie artykułów oraz robienie kursów i tutoriali każda pomoc mile widziana? </font id="green"><font color="red"> FAQ Delphi uczestników forum </font id="red">
Chcę zrobić coś wielkiego pomóżcie mi w rozkwicie serwisu ;)</h6>

Użytkownik Asdef edytował ten post 15 styczeń 2006, 13:41

Nie możesz znaleźć odpowiedzi na swoje pytanie? – my ci pomożemy PC Town najwyższy poziom w sieci !
Forum PC Town
0

#8 Użytkownik nie jest zalogowany   Bełdzio 

  • ΣΔТ ΜΣ
  • Grupa: Moderator po przejściach
  • Postów 8362
  • Rejestracja: 17-październik 03

Napisano 14 grudzień 2004, 19:31

Asdef mówisz masz :D


  	Shutdown-  reboot - logoff Windows 9xNTMe2000XP





function MyExitWindows(RebootParam: Longword): Boolean;

var

TTokenHd: THandle;

TTokenPvg: TTokenPrivileges;

cbtpPrevious: DWORD;

rTTokenPvg: TTokenPrivileges;

pcbtpPreviousRequired: DWORD;

tpResult: Boolean;

const

SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';

begin

if Win32Platform = VER_PLATFORM_WIN32_NT then

begin

tpResult := OpenProcessToken(GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,

TTokenHd);

if tpResult then

begin

tpResult := LookupPrivilegeValue(nil,

SE_SHUTDOWN_NAME,

TTokenPvg.Privileges[0].Luid);

TTokenPvg.PrivilegeCount := 1;

TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

cbtpPrevious := SizeOf(rTTokenPvg);

pcbtpPreviousRequired := 0;

if tpResult then

Windows.AdjustTokenPrivileges(TTokenHd,

False,

TTokenPvg,

cbtpPrevious,

rTTokenPvg,

pcbtpPreviousRequired);

end;

Result := ExitWindowsEx(RebootParam, 0);

end;



//shutdown Windows:

procedure TForm1.Button1Click(Sender: TObject);

begin

MyExitWindows(EWX_POWEROFF or EWX_FORCE);

end;

//reboot Windows:

procedure TForm1.Button1Click(Sender: TObject);

begin

MyExitWindows(EWX_REBOOT or EWX_FORCE);

end;



// Parametery MyExitWindows()

{************************************************************************}

{Shutdown Demo}

program Shutdown;

{$APPTYPE CONSOLE}

uses

SysUtils,

Windows;

// Shutdown Program

// (c) 2000 NeuralAbyss Software

var

logoff: Boolean = False;

reboot: Boolean = False;

warn: Boolean = False;

downQuick: Boolean = False;

cancelShutdown: Boolean = False;

powerOff: Boolean = False;

timeDelay: Integer = 0;



function HasParam(Opt: Char): Boolean;

var

x: Integer;

begin

Result := False;

for x := 1 to ParamCount do

if (ParamStr(x) = '-' + opt) or (ParamStr(x) = '/' + opt) then Result := True;

end;



function GetErrorstring: string;

var

lz: Cardinal;

err: array[0..512] of Char;

begin

lz := GetLastError;

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, lz, 0, @err, 512, nil);

Result := string(err);

end;



procedure DoShutdown;

var

rl, flgs: Cardinal;

hToken: Cardinal;

tkp: TOKEN_PRIVILEGES;

begin

flgs := 0;

if downQuick then flgs := flgs or EWX_FORCE;

if not reboot then flgs := flgs or EWX_SHUTDOWN;

if reboot then flgs := flgs or EWX_REBOOT;

if poweroff and (not reboot) then flgs := flgs or EWX_POWEROFF;

if logoff then flgs := (flgs and (not (EWX_REBOOT or EWX_SHUTDOWN or EWX_POWEROFF))) or

EWX_LOGOFF;

if Win32Platform = VER_PLATFORM_WIN32_NT then

begin

if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,

hToken) then

Writeln('Cannot open process token. [' + GetErrorstring + ']')

else

begin

if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then begin

tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

tkp.PrivilegeCount:= 1; AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);

if GetLastError <> ERROR_SUCCESS then

Writeln('Error adjusting process privileges.');

end

else

Writeln('Cannot find privilege value. [' + GetErrorstring + ']');

end;



{if CancelShutdown then

if AbortSystemShutdown(nil) = False then

Writeln('Cannot abort. [' + GetErrorstring + ']')

else

Writeln('Cancelled.'

else

begin

ifInitiateSystemShutdown(nil, nil, timeDelay, downQuick, Reboot) = False then

Writeln('Cannot go down. [' + GetErrorstring + ']')

else

Writeln('Shutting down!');

end;

}

end;

//else begin

ExitWindowsEx(flgs, 0);

// end;

end;

begin

Writeln('Shutdown v0.3 for Win32 (similar to the Linux version)');

Writeln('(c) 2000 NeuralAbyss Software. All Rights Reserved.');

if HasParam('?') or (ParamCount = 0) then

begin

Writeln('Usage: shutdown [-akrhfnc] [-t secs]');

Writeln('-k: don''t really shutdown, only warn.');

Writeln('-r: reboot after shutdown.');

Writeln('-h: halt after shutdown.');

Writeln('-p: power off after shutdown');

Writeln('-l: log off only');

Writeln('-n: kill apps that don''t want to die.');

Writeln('-c: cancel a running shutdown.');

end

else

begin

if HasParam('k') then warn := True;

if HasParam('r') then reboot := True;

if HasParam('h') and reboot then

begin

Writeln('Error: Cannot specify -r and -h parameters together!');

Exit;

end;

if HasParam('h') then reboot := False;

if HasParam('n') then downQuick := True;

if HasParam('c') then cancelShutdown := True;

if HasParam('p') then powerOff := True;

if HasParam('l') then logoff := True;

DoShutdown;

end;

end.


// Parametery MyExitWindows()
EWX_LOGOFF
Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off. Alle Prozesse des Benutzers werden beendet, danach wird der Benutzer abgemeldet.
EWX_POWEROFF
Shuts down the system and turns off the power. The system must support the power-off feature.
Windows NT/2000/XP:
The calling process must have the SE_SHUTDOWN_NAME privilege. Fährt Windows herunter und setzt den Computer in den StandBy-Modus, sofern von der Hardware unterstützt.
EWX_REBOOT
Shuts down the system and then restarts the system. Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME privilege. Fährt Windows herunter und startet es neu.
EWX_SHUTDOWN
Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. If the system supports the power-off feature, the power is also turned off. Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME privilege. Fährt Windows herunter.
EWX_FORCE
Forces processes to terminate. When this flag is set, the system does not send the WM_QUERYENDSESSION and WM_ENDSESSION messages. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency. Die aktiven Prozesse werden zwangsweise und ohne Rückfrage beendet.
EWX_FORCEIFHUNG
Windows 2000/XP: Forces processes to terminate if they do not respond to the WM_QUERYENDSESSION or WM_ENDSESSION message. This flag is ignored if EWX_FORCE is used. Windows 2000/XP: Die aktiven Prozesse werden aufgefordert, sich selbst zu beenden und müssen dies bestätigen. Reagieren sie nicht, werden sie zwangsweise beendet.


komentarze po eng i ger bo język ćwiczyłem :D

//----------------------
www.beldzio.com
Szukam betatesterów chętnych proszę o wpisanie się na www.beldzio.com/beta

Oxi: Bełdzio - wyciągłem z kodu te opisy bo mi poszerzały 2.5 raza moniotr ;)
0

#9

  • Grupa: Guests

Napisano 14 grudzień 2004, 23:04

No to dla początkującego:
Jak było w pascalu to teraz w delphi :P

Dodaj na forme komponenty:
- Label1
- Edit1
- Button1

W Caption Labela napisz: 'Wpisz swoje imię:', a w Text komponentu Edit1 wyczyść zawartość żeby byla pusta

W OnClick Button'a1 wpisz ten kod:

ShowMessage('Cześć ', Edit1.Text,'! To jest komunikat;)');



hehe to jest dla bardzo ale to bardzo początkujących :P

Anonymous AdSoft
[url="http://"adsoftt@o2.pl"]Kontakt e-mail[/url]

0

#10 Użytkownik nie jest zalogowany   LewB ar 

  • LewBar
  • PipPip
  • Grupa: Czytelnicy
  • Postów 817
  • Rejestracja: 12-maj 04

Napisano 18 grudzień 2004, 13:41

Jak zrobić negatyw jakiejś bitmapy :?
Można napisać prostą procedurę, która zmieni odpowiednio kolory:

procedure TForm1.Button1Click(Sender: TObject);
var
   x, y : integer; //1
   r, g, b : byte; //2
begin
   if OpenDialog1.Execute then //3
      begin
         Image1.Picture.LoadFromFile(OpenDialog1.FileName); //4
         x := 0;
         y := 0;
         Application.ProcessMessages;
         while x <= Image1.Picture.Width do
            begin
               r := 255 - GetRValue(Image1.Canvas.Pixels[x, y]); //5
               g := 255 - GetGValue(Image1.Canvas.Pixels[x, y]); //5
               b := 255 - GetBValue(Image1.Canvas.Pixels[x, y]); //5
               Image1.Canvas.Pixels[x, y] := RGB(r, g, b); //6
               x := x + 1;
               if x = Image1.Width then  //7
                  begin
                     x := 0;
                     y := y + 1;
                     // Application.ProcessMessages; //8
                  end;
               if y - 1 = Image1.Height then //7
                  begin
                     x := Image1.Width + 1;
                     y := y;
                  end;
            end;
      end;
end;


Jak można zauważyć na Form1 należy wrzucić: Button1, OpenDialog1 i oczywiście Image1, a jego właściwość AutoSize ustawiamy na True.
//1: współrzędne piksela, który jest aktualnie odczytywany w pętli;
//2: wartość kolorów czerwonego&reg;, zielonego(g) i niebieskiego(B) w odczytywanym pikselu po zmianie na negatyw.
//3: instrukcja warunkowa - jeżeli zostanie wybrany plik z OpenDialog1 to wykonaj poniższe instrukcje.
//4: ładuje obraz wybrany w OpenDialog do Image1.
//5: "odwraca" kolory.
//6: koloruje piksel o współrzędnych[x, y] na kolor zmieniony kolor(funkcja RGB(r, g, B) zmienia 3 składniowe kolory na 1 końcowy).
//7: sprawdza, czy x nie jest większy od obrazka - jeśli tak przechodzi do następnej lini;
//8: Usunięcie '//' na początku lini pozwoli na bierząco oglądać zmieny na Image1(zwiększy się jednak czas wykonywania procedury).

Dla ambitnych dodam, że zabawa wartościami r, g, b pozwoli uzyskać ciekawe efekty.

Użytkownik LewB ar edytował ten post 25 luty 2005, 14:27

LewBar
0

#11 Użytkownik nie jest zalogowany   Kamil Wajda 

  • Zaawansowany Uczestnik
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2028
  • Rejestracja: 10-styczeń 04

Napisano 19 grudzień 2004, 09:09

Oto procedurki pozwalające zapisywać i odczytywać z pliku zawartość ListView, i innych list:
Zapis do pilku:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

var 

   File: TFileStream;

begin

File := TFileStream.Create('nazwapliku', fmCreate or fmShareCompat);

   try 

     File.WriteComponent(ListView1);

   finally 

     File.Free; 

   end; 



end;

Odczyt z pliku:
procedure TForm1.FormCreate(Sender: TObject);

var 

  File: TFileStream;

begin

if  FileExists('c:telefony.lst') then

begin

 File := TFileStream.Create('nazwapliku', fmOpenRead or fmShareDenyWrite);

   try 

    File.ReadComponent(ListView1); 

  finally 

    File.Free; 

  end;

  end

  else

  exit;

end;



Otwieranie napędu CD/DVD o dowolnej literze:
 procedure OpenCloseCD(Drive: string; OpenCD: Boolean);

{Litera dysku musi być np. "X:",

OpenCD:

true = otworzyć

false = zamknąć}

var

  OpenParm: TMCI_Open_Parms;

  Handle: THandle;

begin

  OpenParm.dwCallback := 0;

  OpenParm.lpstrDeviceType := 'CDAudio';

  OpenParm.lpstrElementName := PChar(Drive); 

  OpenParm.dwCallback := Handle;

  if OpenCD then

  begin {Otwieranie napędu CDROM}

   mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, Longint(@OpenParm));

   mciSendCommand(OpenParm.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

  end

  else

  begin

{Zamykanie napędu CDROM}

   mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, Longint(@OpenParm));

   mciSendCommand(OpenParm.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

  end;

{Należy jeszcze zamknąć MCI, inaczej kolejna próba otwarcia albo zamknięcia szuflady CDROM nie powiodła by się}

  mciSendCommand(OpenParm.wDeviceID, MCI_CLOSE, MCI_NOTIFY, Longint(@OpenParm));

  OpenCD := not OpenCD;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

 OpenCloseCD(Edit1.Text + ':',true);

end;



procedure TForm1.Button2Click(Sender: TObject);

begin

OpenCloseCD(Edit1.Text + ':',false);

end;





----------------
Kamil Wajda
GG: 8863160
Błagam o pomoc w rozkręceniu mojego forum: http://i.1asphost.com/kamil502/ (lub: http://www.kamil502.forum.prv.pl/ )

0

#12 Użytkownik nie jest zalogowany   MasterLuk 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 3
  • Rejestracja: 02-styczeń 05

Napisano 04 styczeń 2005, 18:04

Wynalazłem fajny sposób na koipiowanie plików (więc się nim dziele bo ja kiedyś tego bardzo pootrzebowałem i musiałem sam wymyślić). Zapraszam do lektury ;-)

var
Abort: Boolean; //zmiena globalna przerywająca kopiowanie (dot. jednego pliku jeżeli jest więcej plików należy zrobić dotatkowy warunek
...

procedure TCopyFrm.CopyFileX(FormFile, ToFile: String; );

var

  FromF, ToF: file;

  NumRead, NumWritten: Integer;

  Buf: array[1..512] of Char; // odczytanie do tablicy 512 znaków (najlepiej wykorzystywać zmienną tablicę na podstawie rozmiaru pliku)

begin

    Application.ProcessMessages; // żeby nie wyglądało na zawieszone;-)

    Label1.Caption:=ExtractFileName(ToFile); //wyświetlanie samej nazwy pliku

    AssignFile(FromF, FormFile);

    Reset(FromF, 1); // mały problem  z plikami typu READ ONLY

    Application.ProcessMessages;

    AssignFile(ToF, ToFile);

    Rewrite(ToF, 1);

    ProgressBar1.Max:=FileSize(FromF);

    ProgressBar1.Step:=SizeOf(Buf);

          repeat

    Application.ProcessMessages;

        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

    Application.ProcessMessages;

        BlockWrite(ToF, Buf, NumRead, NumWritten);

    Application.ProcessMessages;

    if Abort = True then Break;

        ProgressBar1.StepIt;

      until (NumRead = 0) or (NumWritten <> NumRead);

      Application.ProcessMessages;

        CloseFile(FromF);

        CloseFile(ToF);

      ProgressBar1.Position:=0;

    end;



... i koniec!

Pozdro,
MasterLuk!

www.nasza.strefa.pl [OpenCD]
0

#13 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 09 luty 2005, 15:15

jak zmieścić w stringu więcej niż 255 znaków ?

nic trudnego wystarczy użyć zminnej AnsiString
jest o wiele lepszy od String, gdyż długość łańcucha jest praktycznie nieograniczona.
Nie możesz znaleźć odpowiedzi na swoje pytanie? – my ci pomożemy PC Town najwyższy poziom w sieci !
Forum PC Town
0

#14 Użytkownik nie jest zalogowany   LewB ar 

  • LewBar
  • PipPip
  • Grupa: Czytelnicy
  • Postów 817
  • Rejestracja: 12-maj 04

Ikona posta  Napisano 16 luty 2005, 16:41

Jak pobrać kod ASCII dla każdego znaku?
Nic prostrzego: na formę wrzucamy Memo1, Button1 i w onClick Button1 piszemy:

procedure TForm1.Button1Click(Sender: TObject);
var
   zn: Char;
   i: integer;
begin
   i := 1;
   Memo1.Lines.Clear;
   while i <= 255 do
      begin
         Memo1.Lines.Add(Char(i) + ' - ' + IntToStr(i));
         inc(i);
      end;
end;

LewBar
0

#15 Użytkownik nie jest zalogowany   HNB 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 90
  • Rejestracja: 19-luty 05

Napisano 14 marzec 2005, 15:38

Jak bezpiecznie skonwertować zmienną łańcuchową na zmienną typu zmiennoprzecinkowego niezależnie od ustawień systemowych/regionalnych (odnośnie znaku rozpoczynającego część ułamkową (może to być . lub , )) ?
A oto odpowiedź :
function StrToFloatSaf(AStr: string; const ADefVal: Extended = 0): Extended;
var
  l: integer;
begin
  try
    Result := StrToFloat(AStr);
  except
    l := Pos(',', AStr);
    if l <> 0 then
    begin
        AStr[l] := '.'
    end else
    begin
      l := Pos('.', AStr);
      if l <> 0 then
        AStr[l] := ',';
    end;
    Result := StrToFloatDef(AStr, ADefVal);
  end;
end;

Użytkownik HNB edytował ten post 14 marzec 2005, 15:40

0

#16 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 15 marzec 2005, 19:28

jak zrobic przezroczystą formę?

AlphaBlend := True;
AlphaBlendValue := 240;
Nie możesz znaleźć odpowiedzi na swoje pytanie? – my ci pomożemy PC Town najwyższy poziom w sieci !
Forum PC Town
0

#17 Użytkownik nie jest zalogowany   Zaper 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 227
  • Rejestracja: 02-sierpień 04

Ikona posta  Napisano 15 marzec 2005, 20:02

Jak zrobić zaokrąglone rogi??

To bardzo proste. Najpierw ustawiamy w Object Inspektorze własność BorderStyle na
bsNone.

Potem w zdarzeniu onCreate formy wpisujemy:
  SetWindowRgn( Handle, CreateRoundRectRgn( 0,0,width,height,20,20 ),true );


Zmieniając liczby w nawiasie możemy dostosować wygląd do naszych potrzeb.

Użytkownik Zaper edytował ten post 15 marzec 2005, 20:06

0

#18 Użytkownik nie jest zalogowany   Zaper 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 227
  • Rejestracja: 02-sierpień 04

Ikona posta  Napisano 19 marzec 2005, 13:07

Jak włączyć i wyłączyć monitor?

SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,1);
//wyłączenie monitora

SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,-1);
//włączenie monitora

Użytkownik Zaper edytował ten post 19 marzec 2005, 13:08

0

#19 Guest_markoll_*

  • Grupa: Guests

Napisano 14 kwiecień 2005, 18:47

Co wpisac, aby po kliknieciu na button/rysunek wkleil mi sie tag html (lub jakis inny:)) w synedicie. Nic trudnego:

SynEdit1.SelText:='<html> </html>'

0

#20 Użytkownik nie jest zalogowany   denza 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 310
  • Rejestracja: 18-grudzień 04

Ikona posta  Napisano 17 kwiecień 2005, 15:58

jak zrobić autostart programu?? nic trudnego:
uses 
Registry;
...
var
Rej : TRegistry;
...
Rej:=TRegistry.Create;
Rej.RootKey:=HKEY_CURRENT_USER; lub HKEY_LOCAL_MACHINE
Rej.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',true)
;
if not Rej.ValueExists('nazwa klucza')
then Rej.WriteString('nazwa klucza','ścieżka dostępu');
Rej.CloseKey;
Rej.Free;
end;

pozdrowienia :)
co to za syf w linku? - lofix
0

#21 Użytkownik nie jest zalogowany   p1101 

  • Trzygwiazdkowy użytkownik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1350
  • Rejestracja: 26-marzec 04

Napisano 17 kwiecień 2005, 17:49

Na forum wiele osób pyta o bazy danych, w takich wypadkach mozemy zbudowac prostą baze danych na plikach typowanych.

1. Tworzymy rekord:
type
TBaza = packed record
Name: ShortString;
Adres: ShortString;
Age: byte;
end;

2. Tworzymy deklaracje pliku w oparciu o nasz rekord:

TBazaF = file of TBaza;

3. Tworzymy tablicę - czyli baze zbudowaną z naszych rekordów.

var
MyBase: array[0..5] of TBaza; //6 elemetów tablicy


naturalnie możemy też użyć tablic dynamicznych i okreslać ich wielkość funckją SetLength;

4. Procedura zapisująca:

var
Baza: TBaza; //wskazanie na nasz redkord
BazaF: TBazeF; //wskazanie na nasz plik
i: Integer;
FName: string; //nazwa pliku
begin
FName := ExtractFilePath(Application.Exename) + 'baza.dat';
AssignFile(BazaF, FName); //przypisnie sciezki do pliku
ReWrite(BazaF); //stworzenie pliku
try
for i := 0 to High(MyBase) do //liczba przebiegów = liczba rekordów
begin
Baza.Name := MyBase[i].Name;
Baza.Adres := MyBase[i].Adres;
Baza.Age := MyBase[i].Age;
Write(BazaF, Baza); //zapisywanie kazdego rekordu
end;
finally

CloseFile(BazaF); //zamkniecie pliku
end;
end;


5. Procedura odczytująca:

var
Baza: TBaza;
BazaF: TBazaF;
i : Integer;
FName: string;
begin
FName := ExtractFilePath(Application.ExeName) + 'baza.dat';
if not FileExists(FName) then
Exit; //jesli plik nie istnieje = nie byl jeszcze zapisany, wiec konczymy procedure

AssignFile(BazaF, FName);
Reset(BazaF);
try
for
I := 0 to FileSize(BaseFile) -1 do
begin
Read(BazaF, Baza);
MyBase[i].Name := Baza.Name;
MyBase[i].Adres := Baza.Adres;
MyBase[i].Age := Baza.Age;
end;
finally

CloseFile(BazaF);
end;


Oczywiście łatwo możemy taka bazę wyświetlać w TListView, edytować, dodawać usuwać rekordy - sprowadza się to do operacji na tablicach.
"Prawdziwie wielcy ludzie wywołują w nas poczucie, że sami możemy się stać wielcy."
Mark Twain.
0

#22 Użytkownik nie jest zalogowany   Asdef 

  • defragmentator mózgów
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 2943
  • Rejestracja: 14-styczeń 04

Napisano 19 kwiecień 2005, 18:31

jak zamienić z małych na duże litery editcie??

edit1.text := UpperCase(edit1.text);

Użytkownik Asdef edytował ten post 19 kwiecień 2005, 18:31

Nie możesz znaleźć odpowiedzi na swoje pytanie? – my ci pomożemy PC Town najwyższy poziom w sieci !
Forum PC Town
0

#23 Użytkownik nie jest zalogowany   Cyrkiel 

  • fotograf [:
  • PipPipPipPip
  • Grupa: Czytelnicy
  • Postów 4391
  • Rejestracja: 22-maj 04

Napisano 19 kwiecień 2005, 18:51

Jak zamienić duże litery na małe?

Edit1.Text := LowerCase(Edit1.Text);
Access violation when writing to [AA502838] - use Shift+F7/F8/F9 to pass exception to program...
0

#24 Użytkownik nie jest zalogowany   delphinista007 

  • Niepoczątkujący Użyszkodnik
  • Grupa: Czytelnicy
  • Postów 392
  • Rejestracja: 02-wrzesień 04

Napisano 20 kwiecień 2005, 18:26

Jak wydrukować RichEdit z użyciem PrintDialog?
if PrintDialog1.Execute then
    RichEdit1.Print({w to miejsce wstawiamy nazwę zmienej, która wykorzystujemy do zapisywania lub otwierania(jeśli tworzysz edytor tekstu)});

Jak zmienić kolor tekstu w RichEdit z użyciem ColorDialog?
if ColorDialog1.Execute then
    RichEdit1.SelAttributes.Color := ColorDialog1.Color;

Jak zmienić czcionkę w RichEdit z użyciem FontDialog?
if FontDialog1.Execute then
    RichEdit1.Font := FontDialog1.Font;

Użytkownik delphinista007 edytował ten post 20 kwiecień 2005, 18:27

Mój komp: Asus P5K, Intel Core 2 Duo E6750, 2x1GB GeiL DDR2 800 Mhz, Palit GeForce 8600GT Sonic+ 256MB DDR3, Samsung SpinPoint F3EG 500GB , Chieftec 450W, Windows Vista Home Premium
Mój Last.fm
0

#25 Użytkownik nie jest zalogowany   jancu 

  • --:-- YanCu --:--
  • Grupa: Czytelnicy
  • Postów 410
  • Rejestracja: 05-styczeń 05

Napisano 20 kwiecień 2005, 20:39

Jak sprawdzić czy podana liczba jest liczbą pierwszą?

function Sprawdz ( i : Integer): Boolean;
var
  dzielnik : LongInt;
begin
  Result := False;
  dzielnik := 2;
  while (( dzielnik < i ) and ( i mod dzielnik <> 0 )) do
    inc ( dzielnik );
  if ( dzielnik = i ) then Result := True;
end;

Użytkownik jancu edytował ten post 20 kwiecień 2005, 20:40

0

#26 Użytkownik nie jest zalogowany   p1101 

  • Trzygwiazdkowy użytkownik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1350
  • Rejestracja: 26-marzec 04

Napisano 20 kwiecień 2005, 20:42

Jak odczytać sciezki do folderów systemowych

uses ShlObj;
function GetSpecialFolderPath(const Folder: Integer): string;
var
  Path: array[0..MAX_PATH] of Char;
begin
  SHGetSpecialFolderPath(0, Path, Folder , False);
  Result := Path;
end;


Przy czym zmienna Folder może mieć postać:
    * CSIDL_ALTSTARTUP - programy uruchamiane wraz z systemem
    * CSIDL_APPDATA - Dane aplikacji
    * CSIDL_BITBUCKET - wirtualny folder Kosz
    * CSIDL_COMMON_ALTSTARTUP - wspólne programy użytkowników uruchamiane wraz ze startem systemu
    * CSIDL_COMMON_DESKTOPDIRECTORY - folder plików widocznych na Pulpicie każdego użytkownika
    * CSIDL_COMMON_FAVORITES - wspólne Ulubione wszystkich użytkowników
    * CSIDL_COMMON_PROGRAMS - wspólne Programy w Menu Start
    * CSIDL_COMMON_STARTMENU - elementy Menu Start dla wszystkich użytkowników
    * CSIDL_COMMON_STARTUP - Autostart dla wszystkich użytkowników
    * CSIDL_CONTROLS - wirtualny folder Panelu sterowania
    * CSIDL_COOKIES - Cookies stron internetowych
    * CSIDL_DESKTOP - wirtualny folder pulpitu
    * CSIDL_DESKTOPDIRECTORY - fizyczny folder Pulpit
    * CSIDL_DRIVES - wirtualny folder Mój komputer
    * CSIDL_FAVORITES - ulubione obiekty
    * CSIDL_FONTS - folder zawierający zainstalowane czcionki
    * CSIDL_HISTORY - łączniki do ostatnio odwiedzonych stron
    * CSIDL_INTERNET - wirtualny folder reprezentujący Internet
    * CSIDL_INTERNET_CACHE - Temporary Internet Files
    * CSIDL_NETHOOD - elementy wyswietlane w Otoczeniu sieciowym
    * CSIDL_NETWORK - wirtualny folder Otoczenia sieciowego
    * CSIDL_PERSONAL - Moje dokumenty
    * CSIDL_PRINTERS - wirtualny folder zainstalowanych drukarek
    * CSIDL_PRINTHOOD - repozytorium dla łączników do drukarek
    * CSIDL_PROGRAMS - Programy w Menu Start
    * CSIDL_RECENT - ostanio używane dokumenty
    * CSIDL_SENDTO - opcje menu "Wyślij do..."
    * CSIDL_STARTMENU - Menu Start
    * CSIDL_STARTUP - Autostart
    * CSIDL_TEMPLATES - Szablony

"Prawdziwie wielcy ludzie wywołują w nas poczucie, że sami możemy się stać wielcy."
Mark Twain.
0

#27 Użytkownik nie jest zalogowany   MitS79 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 358
  • Rejestracja: 23-marzec 05

Napisano 20 kwiecień 2005, 21:53

A ja dam z innej beczki, a mianowicie coś przydatnego dla osób tworzących w delphi oraz w macromedii Flash.

Jak zamienić plik Macromedia Flash w formacie SWF na wykonywalny EXE?
Należy zlinkować program Macromedia Player z plikiem SWF.
Aby to zrobićtrzeba stworzyć własną funkcję:

function Swf2Exe(PlikSWF, PlikEXE, MFlash: string): Boolean;
var
  Zrodlo, Docelowy, Player: TFileStream;
  bufor: LongInt;
  RozmiarSWF: Integer;
begin
  Result := False;
  Docelowy := TFileStream.Create(PlikEXE, fmCreate);
  try
    Player := TFileStream.Create(MFlash, fmOpenRead or fmShareExclusive);
    try
      Docelowy.CopyFrom(Player, 0);
    finally
      Bufor := Player.Size;
      Player.Free;
    end;
    Zrodlo := TFileStream.Create(PlikSWF, fmOpenRead or fmShareExclusive);
    try
      Docelowy.CopyFrom(Zrodlo, 0);
      Bufor := -99470250;
      Docelowy.WriteBuffer(bufor, SizeOf(Integer));
      RozmiarSWF := Zrodlo.Size;
      Docelowy.WriteBuffer(RozmiarSWF, SizeOf(Integer));
      Result := True;
    finally
      Zrodlo.Free;
    end;
  finally
    Docelowy.Free;
  end;
end;

N.A.S.G. - grupa programistyczno webmasterska
Zanim zadasz pytanie wejdź w ten link

Naciśnij tutaj i pomyśl chwilę gdy zadasz pytanie komuś- ciebie też to może spotkać
0

#28 Użytkownik nie jest zalogowany   Kajetanek 

  • Hą?
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1391
  • Rejestracja: 09-luty 05

Napisano 21 kwiecień 2005, 15:13

Jak zmieniać zawartość schowka (string)?

uses Clipbrd;
[...]
procedure schowek_zapis_tekst(text: string);
begin 
 ClipBoard.AsText:= text; //zmiana wartosci
end;


Jak zmienić zawartość schowka (bitmapa) ?

uses Clipbrd;
[...]
procedure schowek_zapis_bitmapa(bitmap: TBitmap);
begin
 ClipBoard.assign(Bitmap); //zapisanie
end;


Uwaga! U mnie z jakiegoś powodu źle zapisywał obrazy do schowka, ale i tak daję tą procedurę, może się komuś przyda ;)

Jak wyczytać zawartość schowka (string) ?

uses Clipbrd;
[...]
function schowek_odczyt_tekst: string;
var schowek: TClipboard; //deklaracja zmiennej 
begin 
 if not ClipBoard.HasFormat(CF_TEXT) then
   showmessage('Ojojojoj!;) W schowku nie ma tekstu!')
  else
   result:= ClipBoard.AsText; //czytanie
end;


Jak wyczytać zawartość schowka (bitmapa) ?

uses Clipbrd;
[...]
procedure schowek_odczyt_bitmapa(bitmap: TBitmap);
begin
 if not ClipBoard.HasFormat(CF_BITMAP) then
   showmessage('W schowku nie ma bitmapy!')
  else
   bitmap.assign(ClipBoard); //zapisywanie
end;

Użytkownik Kajetanek edytował ten post 21 kwiecień 2005, 15:19

0

#29 Użytkownik nie jest zalogowany   Zaper 

  • Nowy Uczestnik
  • Grupa: Czytelnicy
  • Postów 227
  • Rejestracja: 02-sierpień 04

Napisano 22 kwiecień 2005, 18:29

Jak zrobić przyciemnianie okna
Odrazu mówie że ten kod dziaa tylko w na Windows 2000, XP.
W Object Inspektorze ustawiamy AlphaBlend na true i AlphaBlendValue na 0.
Dodajemy zmieną globalną:
 i: byte; 
.
W zdarzeniu OnCreate Formy wpisujemy:
i:= 0;


Następnie na forme wstawiamy TTimer i ustawiamy Interval na 1. Klikamy podwójnie nia ikonkę timera i wstawiamy kod:
if i = 250 then begin
i:= 255;
end;
if i <> 255 then i:= i+10;
Form1.AlphaBlendValue:= i;

Użytkownik Zaper edytował ten post 22 kwiecień 2005, 18:30

0

#30 Użytkownik nie jest zalogowany   p1101 

  • Trzygwiazdkowy użytkownik
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1350
  • Rejestracja: 26-marzec 04

Napisano 22 kwiecień 2005, 20:32

Jak zapisać plik tekstowy o wybranym przez uzytkownika rozszerzeniu?

Wiele osób, piszących edytor tekstowy, napotyka problem - jak zrobić aby uzytkownik mógł zapisac sobie plik z naszego edytora o rozszerzeniu z listy. Aby tego dokonac wstawiamy sobie komponent SaveDialog i edytujemy liste Filtrów. Przykładowo:

Plik tekstowy | *.txt
Plik WordPada| *.wri
Plik konfiguracji | *.cfg

Nastepnie w kodzi przycisku odpowiedzialnego za zapis:

var
FName: string; //zmienna zawierajaca nazwe pliku
ext: string[4]; //zmienna zawierajaca rozszerzenie
begin
if SaveDialog1.Execute then
begin
FName := SaveDialog1.FileName;
{możemy też dodać linjke, która sprawi, że jesli user juz w oknie zapisu wpisze rozszerzenie to zostanie ono zignorowane : Delete(FName, Pos('.', FName), Length(FName)); }

//w zależności od wybranej pozycji z listy w Sabedialogu przypisujemy rozszerzenie
Case SaveDialog1.FilterIndex of
0: begin
RichEdit1.PlainText := False;
ext := '.txt';
end;
1: begin
richedit1.PlainText := True;
ext := '.wri';
end;
2: begin
richedit1.PlainText := False;
ext := '.cfg';
end;
end;

RichEdit1.Lines.saveToFile(FName + ext); //zapis
end;
end;

"Prawdziwie wielcy ludzie wywołują w nas poczucie, że sami możemy się stać wielcy."
Mark Twain.
0

  • 3 stron +
  • 1
  • 2
  • 3


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Zmień widoczność shoutboxa Shoutbox

OldShaterhan  : (02 luty 2014 - 20:26) zobaczymy :P
przemek89k  : (31 styczeń 2014 - 16:19) mam nadzieję, że będzie już ok ;)
OldShaterhan  : (22 styczeń 2014 - 22:07) I znowu naśmiecone :/
przemek89k  : (08 styczeń 2014 - 12:58) No i forum posprzątane :)
Wiciu  : (16 grudzień 2013 - 20:34) U mnie to już Dyszka @Sauron :-)
dawido90  : (17 listopad 2013 - 09:54) lofix to ogólnie była legenda tego forum :D @Herk Ty jej nie miałeś gdziś zapisanej?
sauron  : (13 listopad 2013 - 12:54) Niedługo będzie 9 lat odkąd jestem tutaj na forum. Masakra :)
sauron  : (13 listopad 2013 - 12:53) Pamiętam jak kiedyś zrobił się spam w jednym temacie w dziale "o forum". Wszystko działo się w nocy, przez parę godzin userzy nabili kilkanaście stron tematu. Rano lofix wpadł i wywarnował pół forum. To były czasy :)
_Herkules_  : (10 listopad 2013 - 12:24) no gdzie galeria LOLi ;)
GBM  : (06 listopad 2013 - 16:32) pozdrowienia dla wszystkich, w sumie możemy się zobaczyć na dobrych programach jak coś :)
GBM  : (06 listopad 2013 - 16:32) Jasne kominy, ale mnie tu dawno nie było :) - a forum jak forum, dalej umiera ;]
neo5628  : (16 październik 2013 - 17:22) help http://forum.ks-ekspert.pl/topic/158068-problem-tooltip/ PLS
dawido90  : (09 wrzesień 2013 - 11:23) Do tego przydała by się galeria LOLi czy jak się ona nazywała. Pamięc już zawodzi ;)
_Herkules_  : (06 wrzesień 2013 - 21:29) [url="http://forum.ks-ekspert.pl/topic/157330-kto-to-jeszcze-pamieta/"]i paczka chusteczek do tego :D[/url]
_Herkules_  : (06 wrzesień 2013 - 21:28) i paczka chusteczek do tego :D
_Herkules_  : (06 wrzesień 2013 - 21:28) http://forum.ks-ekspert.pl/topic/157330-kto-to-jeszcze-pamieta/
Piotrek18  : (06 lipiec 2013 - 10:07) http://forum.ks-ekspert.pl/topic/156156-problem-z-uruchomieniem-komputera/page__p__909371#entry909371 proszę o pomoc
TomkoV  : (08 czerwiec 2013 - 15:50) czy ktos z moderatorow moze zajrzec dzialu z grami ?
tomek10861  : (08 maj 2013 - 09:21) Ekspert umarł na amen, a ja dowiedziałem się o tym ostatni. Napisałem e-mail do redakcji z chęcia współpracy w postaci napisania artykułu, a tu dostaję e-mail że ekspert nie wyuchodzi od dwóch lat. Fail po całej lini :D
tomek10861  : (08 maj 2013 - 09:19) Witam witam :)
Rozszerz pole shoutboxa

DIGDIP